home *** CD-ROM | disk | FTP | other *** search
/ Games of Daze / Infomagic - Games of Daze (Summer 1995) (Disc 1 of 2).iso / x2ftp / msdos / docs / inter45c / interrup.j < prev    next >
Encoding:
Text File  |  1995-03-26  |  345.7 KB  |  9,260 lines

  1. Interrupt List, part 10 of 12
  2. This compilation is Copyright (c) 1989,1990,1991,1992,1993,1994,1995 Ralf Brown
  3. --------*-61---------------------------------
  4. INT 61 - reserved for user interrupt
  5. --------b-61---------------------------------
  6. INT 61 - Atari Portfolio - EXTENDED BIOS
  7. Desc:    provides subfunctions such as turning off the machine, accessing
  8.       internal variables, and mapping memory cards
  9. SeeAlso: INT 60"Atari"
  10. --------b-61---------------------------------
  11. INT 61 - TI Professional PC - FACTORY ROM DATA AREA POINTER (NOT A VECTOR!)
  12. Desc:    the low word of this vector contains the segment of the RAM data area
  13.       to be used by the expansion ROM at F400h:0000h, and the high word
  14.       contains the length of the data area; this segment and size are
  15.       both set to 0000h if no ROM is installed at F400h:0000h
  16. SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
  17. SeeAlso: INT 66"TI Professional PC"
  18. --------b-61---------------------------------
  19. INT 61 - HP 95LX System Manager - LOAD DS
  20. SeeAlso: INT 0F"HP 95LX",INT 60"HP 95LX"
  21. --------r-61---------------------------------
  22. INT 61 - JPI TopSPEED Modula-2 v1 - PROCEDURE EXIT TRAP
  23. SeeAlso: INT 60"JPI"
  24. --------d-61---------------------------------
  25. INT 61 - Adaptec and OMTI controllers - DRIVE 0 DATA
  26. Desc:    this vector stores the second four bytes of the parameter table for
  27.       hard disk 0
  28. SeeAlso: INT 60"Adaptec",INT 62"Adaptec",INT 63"Adaptec"
  29. --------I-61---------------------------------
  30. INT 61 - Sangoma CCIP (CCPOP 3270 resident module) INTERFACE
  31.     BX:DX -> control block
  32. SeeAlso: INT 67"Sangoma"
  33. --------v-61---------------------------------
  34. INT 61 - VIRUS - "SEMTEX"/"Screen Trasher" - INT 21h SUBSTITUTE
  35. Note:    the virus copies the original INT 21h vector into INT 61h
  36. SeeAlso: INT 21h,INT 60"VIRUS",INT 6B"VIRUS"
  37. --------U-61---------------------------------
  38. INT 61 - PC-Magazin - PAGE, SWAPx
  39.     details not yet available
  40. Program: PAGE and SWAPx are utilities from PC-Magazin, the German edition of
  41.       PC Magazine, issue 47/85, page 31
  42. SeeAlso: INT 66"INCA"
  43. --------N-61---------------------------------
  44. INT 61 - TCPOpen kernel - API
  45.     ES:BX -> request packet (see #1960)
  46. Program: TCPOpen is a TCP/IP protocol stack by Lanera
  47. Range:    INT 60 to INT 7F, selected by configuration file
  48. Note:    there does not appear to be an installation check, though function
  49.       FFFFh can be used to verify that the software is indeed functioning
  50.  
  51. Format of TCPOpen request packet:
  52. Offset    Size    Description    (Table 1960)
  53.  00h  8 BYTEs    ???
  54.  08h    WORD    function number (0000h-001Ah or FFF9h-FFFFh)
  55.  0Ah    WORD    ???
  56.  0Ch  2 BYTEs    ???
  57.  0Eh    WORD    (ret) return code
  58.  10h  2 BYTEs    ???
  59.  12h    WORD    ???
  60.  14h    WORD    (ret) 0001h if requested function complete
  61.  16h    WORD    (ret) ???
  62.  18h  6 BYTEs    ???
  63.  1Eh    DWORD    -> ???
  64.  22h    WORD    ??? or 0000h
  65.  24h    WORD    (ret) ???
  66. SeeAlso: #1961
  67.  
  68. (Table 1961)
  69. Call TCPOpen Function FFFFh: installation verification
  70. Return: offset 10h = BEEFh
  71.     offset 14h = 0001h
  72.     offset 24h = ???
  73. Index:    installation check;TCPOpen kernel
  74. --------N-61---------------------------------
  75. INT 61 - XFS v1.76 - XFSKRNL.EXE - API
  76.     AX = function
  77.         8000h installation check???
  78.         Return: AX = 0000h
  79.         8001h ???
  80.         ES:DI -> DWORD ???
  81.         Return: AX = status???
  82.         8002h ???
  83.         BX = ???
  84.         CX = ???
  85.         ES:DI -> ???
  86.         Return: AX = status???
  87.         8003h ???
  88.         BX = ???
  89.         CX = ???
  90.         ES:DI -> ???
  91.         Return: AX = status???
  92.         8004h ???
  93.         BX = ???
  94.         Return: AX = status???
  95.         8005h wait until ???
  96.         Return: DX:AX = ???
  97.         8006h get ???
  98.         Return: DX:AX -> ??? record
  99.         8007h set IP address??? (or htonl/ntohl)
  100.         DX:BX = IP address???
  101.         Return: DX:AX = byte-swapped IP address
  102.         8008h set IP address??? (or htonl/ntohl)
  103.         DX:AX = IP address???
  104.         Return: DX:AX = byte-swapped IP address
  105.         8009h ???
  106.         ES:DI -> ???
  107.         Return: DX:AX = ???
  108.         800Ah ???
  109.         800Bh ???
  110.         Return: DX:AX = ???
  111.         800Ch ???
  112.         800Dh ???
  113.         800Eh ???
  114.         800Fh ???
  115.         8010h get ??? record
  116.         Return: DX:AX -> ??? record
  117.         8011h ???
  118.         8012h ???
  119.         BX = ???
  120.         Return: DX:AX = ???
  121.         8013h get ??? record
  122.         Return: DX:AX -> ??? record
  123.         8014h ???
  124.         ES:DI -> ???
  125.         Return: nothing
  126.         8015h get ??? record
  127.         Return: DX:AX -> 8-byte ??? record
  128.         8016h get ??? record
  129.         Return: DX:AX -> 6-byte ??? record
  130.         8017h ???
  131.         ES:DI -> ???
  132.         Return: DX:AX = ???
  133.         8018h get ??? record
  134.         Return: DX:AX -> ??? record
  135.         8019h get ??? record
  136.         Return: DX:AX -> 14-byte ??? record
  137.         801Ah get ??? record
  138.         Return: DX:AX -> ??? record (max 98 bytes)
  139.         801Bh get ??? record
  140.         Return: DX:AX -> ??? record
  141.         801Ch ???
  142.         Return: nothing
  143.         801Dh get ???
  144.         Return: AL = ???
  145.         801Eh ???
  146.         Return: AX = ???
  147.         801Fh uninstall
  148.         Return: AX = status
  149.                 0000h successful
  150.                 other interrupt which could not be released
  151.     AX = other
  152.         Return: AX:BX = ??? (0000h:0000h by default)
  153. Program: XFS is a shareware Network File System client by Robert Juhasz
  154. Range:    INT 60 to INT 65, selected by scanning for two consecutive free
  155.       vectors and hooking the first
  156. SeeAlso: INT 62"XFS"
  157. --------N-61---------------------------------
  158. INT 61 - FTP Software PC/TCP - TCP/IP TSR System Call interface
  159.     AH = system call number (see also entries below)
  160.         01h "pkt_alloc" (v2.05; this is "net_config" in v2.1+)
  161.         02h "pkt_free" (v2.05; this is "get_kernel_info" in v2.1+)
  162. Return: CF clear if successful
  163.     CF set on error
  164.         AL = basic error (see #1962)
  165.         AH = suberror number (see #1963,#1964)
  166. Range:    INT 20h to INT E0h, selected by configuration
  167. Notes:    the installation check consists of testing for the signature "TCPTSR"
  168.       three bytes beyond the start of the interrupt handler
  169. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  170.       greater than 54h in AH may crash the system.    Other kernels may have
  171.       this bug as well.
  172. SeeAlso: INT 61/AH=00h"PC/TCP",INT 61/AH=2Ah,INT 61/AH=54h
  173. Index:    installation check;PC/TCP
  174.  
  175. (Table 1962)
  176. Values for PC/TCP error code:
  177.  00h "NET_NOERR" successful
  178.  01h "NET_ERR_INUSE" protocol or socket already in use
  179.  02h "NET_DOS_ERR" MS-DOS error (returned as suberror code in AH)
  180.  03h "NET_ERR_NOMEM" out of memory
  181.  04h "NET_ERR_NOTNETCONN" not a network descriptor
  182.  05h "NET_ERR_ILLEGALOP" invalid operation on given kind of network descriptor
  183.  06h "NET_ERR_BADPKT" illegal or corrupted packet
  184.  07h "NET_ERR_NOHOST" no host bound to specified connection
  185.  08h "NET_ERR_CANTOPEN" unable to open file
  186.  09h "NET_ERR_NET_UNREACHABLE" network is unreachable
  187.  0Ah "NET_ERR_HOST_UNREACHABLE" host is unreachable (see subcodes below)
  188.  0Bh "NET_ERR_PROT_UNREACHABLE" protocol is unreachable
  189.  0Ch "NET_ERR_PORT_UNREACHABLE" port is unreachable
  190.  0Dh "NET_ERR_TIMEOUT" operation timed out
  191.  0Eh "NET_ERR_HOSTUNKNOWN" unable to resolve host name
  192.  0Fh "NET_ERR_NOSERVERS" no name servers configured
  193.  10h "NET_ERR_SERVER_ERR" bad reply from name server
  194.     Subcodes: 0= no error, 1 = Host unreachable
  195.  11h "NET_ERR_BADFORMAT" bad format for IP address or field in IP address struc
  196.             is zero
  197.  12h "NET_ERR_BADARG" invalid argument
  198.  13h "NET_ERR_EOF" foreign host closed its end of connection
  199.  14h "NET_ERR_RESET" connection has been reset
  200.  15h "NET_ERR_WOULDBLOCK" recv() call was done on a non-blocking connection
  201.             with no data available
  202.  16h "NET_ERR_UNBOUND" insufficient resources to do operation
  203.  17h "NET_ERR_NODESC" could not allocate network descriptor
  204.  18h "NET_ERR_BADSYSCALL" invalid/unsupported kernel call
  205.  19h "NET_ERR_CANTBROADCAST" unable to broadcast
  206.  1Ah "NET_ERR_NOTESTAB" operation illegal because connection not established
  207.  1Bh kernel busy, try again later
  208.  1Ch "NET_ERR_ICMPMESG" an ICMP message was received (not on streams)
  209.     (see subcodes below)
  210. ---v2.1+---
  211.  1Dh "NET_ERR_TERMINATING" internal kernel fatal error
  212.  1Eh "NET_ERR_TAG_LOCKED" not allowed to set this tag (net_config)
  213.  1Fh "NET_ERR_BAD_INTERFACE" non existent interface specified
  214.  20h "NET_ERR_BADCONFIG" kernel cannot run - bad configuration
  215.  21h "NET_ERR_EMM" expanded memory error
  216.  22h "NET_ERR_CANT_SHUTDOWN" cant unload kernel (multitasker running)
  217.  23h "NET_ERR_PARKED_IN" unable to unhook DOS interrupt
  218.  24h "NET_ERR_NOQIOS" ran out of resources; try again later
  219.  25h "NET_ERR_WOULD_TRUNCATE" datagram too large and "don't truncate" was set
  220.  
  221. (Table 1963)
  222. Values for subcodes of PC/TCP error 0Ah "NET_ERR_HOST_UNREACHABLE":
  223.  00h    no error
  224.  01h    host unreachable
  225.  02h    ARP failed
  226.  03h    hardware failure
  227.  04h    link failure
  228.  05h    no route
  229.  06h    gateway down
  230.  
  231. (Table 1964)
  232. Values for subcodes of PC/TCP error 1Ch "NET_ERR_ICMPMESG":
  233.  07h    unrecognised
  234.  08h    can't fragment
  235.  09h    srcr_fail
  236.  0Ah    source quench
  237.  0Bh    time exceeded
  238.  0Ch    parameter problem
  239.  0Dh    admin_prohib. see also code 0Ah
  240. --------N-6100-------------------------------
  241. INT 61 U - PC/TCP kernel v2.05+ - GET DEBUG INFORMATION
  242.     AH = 00h
  243.     DS:SI -> 216-byte buffer for network debugging information (see #1965)
  244. Return: CF clear
  245.     AX = 0000h
  246.     buffer filled
  247. Notes:    this call is not documented by FTP, Inc. for any version
  248.     most of the information returned by this call is available via the
  249.       documented get_kernel_info or net_info commands.
  250.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  251. SeeAlso: INT 61"PC/TCP",INT 61/AH=2Ah"PC/TCP"
  252.  
  253. Format of network debugging information:
  254. Offset    Size    Description    (Table 1965)
  255.  00h    DWORD    number of interrupts
  256.  04h    DWORD    receive buffer low-water mark
  257.  08h    DWORD    transmit buffer low-water mark
  258.  0Ch    DWORD    number of packets received
  259.  10h    DWORD    number of packets transmitted
  260.  14h    DWORD    total receive errors
  261.  18h    DWORD    total transmit errors
  262.  1Ch  4 BYTEs    ???
  263.  20h    DWORD    receive resets
  264.  24h    DWORD    transmit resets
  265.  28h    DWORD    number of "runts" received
  266.  2Ch    DWORD    number of alignment errors on received packets
  267.  30h    DWORD    number of CRC errors on received packets
  268.  34h    DWORD    number of parity errors on received packets
  269.  38h    DWORD    number of receive overflow errors
  270.  3Ch    DWORD    number of oversized packets received
  271.  40h    DWORD    number of packets lost due to lack of buffers
  272.  44h    DWORD    receive timeouts
  273.  48h 32 BYTEs    ???
  274.  68h    DWORD    number of transmit collisions
  275.  6Ch    DWORD    number of transmit timeouts
  276.  70h    DWORD    number of transmit underflows
  277.  74h    DWORD    number of lost "crs" on transmit
  278.  78h    DWORD    number of times heartbeat failed on transmit
  279.  7Ch 24 BYTEs    ???
  280.  94h    WORD    free packet buffers
  281.  96h    WORD    total packet buffers
  282.  98h    WORD    minimum number of packet buffers free since kernel started
  283.  9Ah 24 BYTEs    ???
  284.  B2h    DWORD    pointer to TCP connection list???
  285.  B6h    DWORD    pointer to IP routing table???
  286.  BAh 30 BYTEs    ???
  287. --------N-6100-------------------------------
  288. INT 61 - Banyan VINES - CALL A SERVICE
  289.     AH = 00h
  290.     AL = service ID (1..16)
  291.     other registers vary by service
  292. Return: AX = status (see #1968)
  293. Desc:    Calls an adapter driver or redirector service. The service handler
  294.       pointers are stored at offset 0010h in the code segment of the
  295.       BANV interrupt handler (see #1966).
  296. Note:    Banyan can use any interrupt from 60h through 66h.  The Banyan
  297.       interrupt handler is identified by the string "BANV" in the four
  298.       bytes immediately preceding the interrupt handler
  299. SeeAlso: AH=01h,AH=03h
  300.  
  301. Format of the BANV code segment (revision 5.53):
  302. Offset    Size    Description    (Table 1966)
  303.  00h 16    BYTEs    reserved
  304.  10h 16    DWORDs    far pointers to the service handlers (0 = not installed)
  305.  50h    DWORD    far pointer to last called service
  306.  54h    WORD    VINES revision
  307.  56h    DWORD    VINES revision long
  308.  5Ah    WORD    VINES revision (lower bound)
  309.  5Ch    DWORD    VINES revision (lower bound) long
  310.  60h    WORD    VINES revision (upper bound)
  311.  62h    DWORD    VINES revision (upper bound) long
  312.  66h    WORD    end of PCCONFIG area
  313.  68h    WORD    start of PCCONFIG area
  314.  6Ah  4    BYTEs    BANV interrupt identifier ("BANV")
  315.  6Eh  N    BYTEs    BANV interrupt service
  316. SeeAlso: #1967
  317. --------V-610000-----------------------------
  318. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ZOOM DISPLAY
  319.     AX = 0000h
  320.     BX = zoom factor (0-7)
  321. Desc:    zooms the display based on the given zoom factor
  322. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  323.       obtained by calling INT 16/AH=FFh
  324.     not all vendors include the Tseng TSR which supports these functions
  325. SeeAlso: AX=0001h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  326. SeeAlso: INT 16/AH=FFh"OPTIMA"
  327. --------N-610001-----------------------------
  328. INT 61 - Banyan VINES - INTERNAL COMMUNICATION
  329.     AX = 0001h
  330.     BX -> internal communications control block (see #1967)
  331.     DS = 0001h
  332.     CX = caller's data segment
  333.     DX = caller's data segment
  334. Return: AX = status
  335.         0000h successful
  336.         00A5h resource not available
  337. Range:    INT 60 to INT 66
  338. Notes:    This service is handled by the adapter driver
  339.     The existence of the following subfunctions has been verified:
  340.       0001h, 0002h, 0003h, 0004h, 0005h, 0008h, 0009h, 000Ah, 000Bh, 000Ch
  341.       0012h, 0013h, 0015h, 0016h
  342.  
  343. Format of internal communications control block:
  344. Offset    Size    Description    (Table 1967)
  345.  00h    WORD    subfunction number
  346.  02h    WORD    magic number (FEFEh)
  347.  04h    WORD    ??? result, should be set to 0 before calling
  348.  06h    WORD    ??? reserved
  349.  08h    WORD    ??? caller's code segment if function 000Bh, 0 else
  350.  0Ah    WORD    ??? main input/output parameter
  351.  0Ch    WORD    ??? some output parameter
  352.  0Eh    WORD    ??? some input/output parameter
  353. SeeAlso: #1966
  354. --------N-610001SF0001-----------------------
  355. INT 61 - Banyan VINES - "Sosock" - OPEN COMMUNICATIONS SOCKET
  356.     AX = 0001h subfn 0001h
  357.     DS:DX -> communications control block (function 0001h) (see #1969)
  358. Return: AX = status (0000h-0002h,0098h,009Eh-00A2h) (see #1968)
  359. Range:    INT 60h to INT 66h
  360. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  361.       the four bytes immediately preceding the interrupt handler
  362. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0008h,INT 15/AX=DE2Eh
  363.  
  364. (Table 1968)
  365. Values for VINES status:
  366.  0000h    successful
  367.  0001h    service not installed
  368.  0002h    invalid service ID
  369.  0003h    invalid function
  370.  0004h-000Ah reserved for BANV interface errors
  371.  0097h    invalid socket identifier
  372.  0098h    resource already in use
  373.  009Bh    destination node unreachable
  374.  009Ch    message overflow
  375.  009Dh    destination socket nonexistent
  376.  009Eh    address family does not exist
  377.  009Fh    socket type does not exist
  378.  00A0h    protocol does not exist
  379.  00A1h    no more sockets available
  380.  00A2h    no more buffer space available
  381.  00A3h    timeout
  382.  00A5h    resource not available
  383.  00A6h    internal communication failure
  384.  00B1h    resource disconnect
  385.  
  386. Format of VINES control block to open socket:
  387. Offset    Size    Description    (Table 1969)
  388.  00h    WORD    0001h
  389.  02h    WORD    pointer to argument block
  390.  04h    WORD    error return code
  391.  06h  4 BYTEs    reserved
  392. SeeAlso: #1970
  393.  
  394. Format of VINES argument block for opening socket:
  395. Offset    Size    Description    (Table 1970)
  396.  00h    WORD    pointer to 2-byte buffer for socket identifier
  397.  02h    WORD    address family
  398.         0003h Banyan
  399.  04h    WORD    socket type
  400.         in address family 0003h
  401.             0001h IPC socket
  402.             0002h SPP socket
  403.  06h    WORD    protocol number
  404.         FFFFh default
  405.  08h    WORD    pointer to 16-byte buffer for socket address (see #1971)
  406.  0Ah    WORD    local port number
  407.         0000h if service should assign transient port number
  408.         0001h to 01FFh well-known port number (assigned by Banyan)
  409. SeeAlso: #1969
  410.  
  411. Format of Banyan VINES IPC port:
  412. Offset    Size    Description    (Table 1971)
  413.  00h    WORD    address family (always 0003h for Banyan ports)
  414.  04h  4 BYTEs    network number (server's serial number)
  415.  06h    WORD    subnet number  (0001h = server, 8000h-FFFEh = PC)
  416.  08h    WORD    port ID (0001h-01FFh for "well-known" ports)
  417.  0Ah    BYTE    hop count
  418.  0Bh  5 BYTEs    filler
  419. SeeAlso: #1976
  420. --------N-610001SF0002-----------------------
  421. INT 61 - Banyan VINES - "Sosend" - INITIATE OUTPUT EVENT
  422.     AX = 0001h subfn 0002h
  423.     DS:DX -> communications control block (function 0002h) (see #1972)
  424. Return: AX = status (0000h-0002h,0097h,009Bh-009Dh,00A2h,00A3h,00B1h)
  425.         (see #1968)
  426. Range:    INT 60h to INT 66h
  427. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  428.       the four bytes immediately preceding the interrupt handler
  429. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0005h
  430.  
  431. Format of VINES control block for subfunction 0002h:
  432. Offset    Size    Description    (Table 1972)
  433.  00h    WORD    0002h
  434.  02h    WORD    pointer to argument block (see #1973)
  435.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  436.         (see #1968)
  437.  06h  4 BYTEs    reserved
  438. SeeAlso: #1977
  439.  
  440. Format of VINES argument block for subfunction 0002h:
  441. Offset    Size    Description    (Table 1973)
  442.  00h    WORD    routine metric
  443.  02h    WORD    error return code
  444.  04h    WORD    socket identifier
  445.  06h    WORD    pointer to send buffer (see #1975)
  446.  08h    WORD    length of send buffer
  447.  0Ah    WORD    message request flags (see #1974)
  448.  0Ch 16 BYTEs    socket address (see #1976)
  449.  1Ch    WORD    timeout value in multiples of 200ms
  450.  1Eh    WORD    connection identifier
  451.  20h    WORD    type of request
  452.         0001h send message
  453.         0002h establish a virtual connection
  454.         0003h terminate a virtual connection
  455. SeeAlso: #1972,#1978
  456.  
  457. Bitfields for message request flags:
  458. Bit(s)    Description    (Table 1974)
  459.  0    async request
  460.  1    reliable message
  461.  2    flush receive buffer on overflow
  462.  3    end of user message received
  463.  4    vectored request (if set, send buffer contains buffer descriptors)
  464.  5    connection-specific receive
  465.  6    change to connection-specific receive mode
  466. SeeAlso: #1973,#1978
  467.  
  468. Format of buffer descriptor:
  469. Offset    Size    Description    (Table 1975)
  470.  00h    WORD    data segment
  471.  02h    WORD    buffer pointer
  472.  04h    WORD    buffer length
  473.  06h    WORD    character count
  474. SeeAlso: #1973
  475.  
  476. Format of VINES socket address for unreliable datagrams:
  477. Offset    Size    Description    (Table 1976)
  478.  00h    WORD    0003h      address family
  479.  02h    DWORD    FFFFFFFFh network number
  480.  06h    WORD    FFFFh      subnet number
  481.  08h    WORD          local port number
  482.  0Ah    BYTE    00h-0Fh      hop count
  483.  0Bh  5 BYTEs    0000h      filler
  484. SeeAlso: #1971
  485. --------N-610001SF0003-----------------------
  486. INT 61 - Banyan VINES - "Sorec" - RECEIVE INPUT EVENT NOTIFICATION
  487.     AX = 0001h subfn 0003h
  488.     DS:DX -> communications control block (function 0003h) (see #1977)
  489. Return: AX = status (00-0Ah,97h,A2h,A3h) (see #1968)
  490. Range:    INT 60h to INT 66h
  491. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  492.       the four bytes immediately preceding the interrupt handler
  493. SeeAlso: AX=0001h/SF=0002h
  494.  
  495. Format of VINES control block for subfunction 0003h:
  496. Offset    Size    Description    (Table 1977)
  497.  00h    WORD    0003h
  498.  02h    WORD    pointer to argument block (see #1978)
  499.  04h    WORD    error return code (0000h,0097h,00A2h,00A3h,00A5h,00A6h,00B1h)
  500.         (see #1968)
  501.  06h  4 BYTEs    reserved
  502. SeeAlso: #1972,#1978,#1980
  503.  
  504. Format of VINES argument block for subfunction 0003h:
  505. Offset    Size    Description    (Table 1978)
  506.  00h    WORD    character count
  507.  02h    WORD    error return code
  508.  04h    WORD    socket identifier
  509.  06h    WORD    pointer to receive buffer (see #1979)
  510.  08h    WORD    length of receive buffer
  511.  0Ah    WORD    message request flags (see #1974)
  512.  0Ch 16 BYTEs    socket address (see #1971)
  513.  1Ch    WORD    timeout value in multiples of 200ms
  514.  1Eh    WORD    connection identifier
  515.  20h    WORD    type of response
  516.         0001h message received
  517.         0002h virtual connection established
  518.         0003h virtual connection terminated
  519. SeeAlso: #1977,#1981
  520.  
  521. Format of buffer descriptor:
  522. Offset    Size    Description    (Table 1979)
  523.  00h    WORD    data segment
  524.  02h    WORD    buffer pointer
  525.  04h    WORD    buffer length
  526.  06h    WORD    character count
  527. SeeAlso: #1978
  528. --------N-610001SF0004-----------------------
  529. INT 61 - Banyan VINES - "Soclose" - CLOSE A SOCKET
  530.     AX = 0001h subfn 0004h
  531.     DS:DX -> communications control block (function 0004h) (see #1980)
  532. Return: AX = status (0000h-000Ah,0097h) (see #1968)
  533. Range:    INT 60h to INT 66h
  534. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  535.       the four bytes immediately preceding the interrupt handler
  536. SeeAlso: AX=0001h/SF=0001h,INT 15/AX=DE2Eh
  537.  
  538. Format of VINES control block to close socket:
  539. Offset    Size    Description    (Table 1980)
  540.  00h    WORD    0004h
  541.  02h    WORD    pointer to argument block (see #1981)
  542.  04h    WORD    error return code (see #1968)
  543.  06h  4 BYTEs    reserved
  544. SeeAlso: #1977,#1983
  545.  
  546. Format of VINES argument block for closing socket:
  547. Offset    Size    Description    (Table 1981)
  548.  00h    WORD    socket identifier
  549. SeeAlso: #1978,#1980,#1984
  550. --------N-610001SF0005-----------------------
  551. INT 61 - Banyan VINES - "Sowait" - WAIT FOR ASYNCHRONOUS EVENT COMPLETION
  552.     AX = 0001h subfn 0005h
  553.     DS:DX -> communications control block (see #1983)
  554. Return: AX = status (0000h-000Ah,00A2h,00A3h) (see #1982)
  555. Desc:    returns results for all asynchronous operations invoked from the
  556.       data segment used for this call
  557. Range:    INT 60h to INT 66h
  558. Notes:    The Banyan interrupt handler is identified by the string "BANV" in
  559.       the four bytes immediately preceding the interrupt handler
  560. SeeAlso: AX=0001h/SF=0002h,AX=0001h/SF=0009h
  561.  
  562. (Table 1982)
  563. Values for VINES function status:
  564.  0000h    successful
  565.  0001h    service not installed
  566.  0002h    invalid service ID
  567.  0003h-000Ah reserved for BANV interface errors
  568.  00A2h    no more buffer space available
  569.  00A3h    timeout event
  570.  
  571. Format of VINES control block for subfunction 0005h:
  572. Offset    Size    Description    (Table 1983)
  573.  00h    WORD    0005h
  574.  02h    WORD    pointer to argument block (see #1984)
  575.  04h    WORD    error return code
  576.  06h  4 BYTEs    reserved
  577. SeeAlso: #1980,#1985
  578.  
  579. Format of VINES argument block for subfunction 0005h:
  580. Offset    Size    Description    (Table 1984)
  581.  00h    WORD    pointer to WORD event pointer
  582.  02h    WORD    timeout in multiples of 200ms, FFFFh = infinite
  583. SeeAlso: #1981,#1983
  584. --------N-610001SF0008-----------------------
  585. INT 61 - Banyan VINES - "Sosession" - REGISTER APPLICATION WITH COMM SERVICE
  586.     AX = 0001h subfn 0008h
  587.     DS:DX -> communications control block (function 0008h) (see #1985)
  588. Return: AX = status
  589.         0000h  successful
  590.         00A2h  no more buffer space available
  591. Range:    INT 60h to INT 66h
  592. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  593.       the four bytes immediately preceding the interrupt handler
  594. SeeAlso: AX=0001h/SF=0001h,AX=0001h/SF=0009h
  595.  
  596. Format of VINES control block for subfunction 0006h:
  597. Offset    Size    Description    (Table 1985)
  598.  00h    WORD    0008h
  599.  02h    WORD    process type
  600.         0001h transient process
  601.         0002h resident process
  602.  04h    WORD    error return code
  603.  06h  4 BYTEs    reserved
  604. SeeAlso: #1983,#1986
  605. --------N-610001SF000B-----------------------
  606. INT 61 - Banyan VINES - "Soint" - SET USER COMPLETION FUNCTION
  607.     AX = 0001h subfn 000Bh
  608.     DS:DX -> communications control block (function 000Bh) (see #1986)
  609. Return: AX = status (00h-0Ah,A2h) (see #1982)
  610. Range:    INT 60h to INT 66h
  611. Note:    The Banyan interrupt handler is identified by the string "BANV" in
  612.       the four bytes immediately preceding the interrupt handler
  613. SeeAlso: AX=0001h/SF=0005h,AX=0001h/SF=0008h
  614.  
  615. Format of VINES control block for subfunction 000Bh:
  616. Offset    Size    Description    (Table 1986)
  617.  00h    WORD    000Bh
  618.  02h    WORD    pointer to argument block (see #1987)
  619.  04h    WORD    error return code (see #1968)
  620.  06h  2 BYTEs    reserved
  621.  08h    WORD    user CS register
  622. SeeAlso: #1985
  623.  
  624. Format of VINES argument block for subfunction 000Bh:
  625. Offset    Size    Description    (Table 1987)
  626.  00h    WORD    pointer to user interrupt function (see #1988)
  627.  02h    WORD    pointer to user stack
  628.  04h    WORD    initial timeout value in multiples of 200ms, FFFFh = infinite
  629. SeeAlso: #1987
  630.  
  631. (Table 1988)
  632. Values FAR user function is invoked with:
  633.     SS = DS = ES = segment of control block
  634.     STACK:    DWORD    return address
  635.         WORD    argument pointer (sosend or sorec argument block)
  636.         WORD    error return code
  637.             0000h argument pointer is valid
  638.             00A3h timeout
  639. --------V-610001-----------------------------
  640. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - CENTER ZOOM WINDOW
  641.     AX = 0001h
  642.     BX = X coordinate to center
  643.     CX = Y coordinate to center
  644. Desc:    Positions the zoom window such that the specified window-relative
  645.       coordinates appear as close as possible to the center of the
  646.       display.  Useful for scrolling and panning.
  647. Range:    unknown
  648. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  649.       obtained by calling INT 16/AH=FFh
  650.     not all vendors include the Tseng TSR which supports these functions
  651. SeeAlso: AX=0000h"OPTIMA",AX=0002h"OPTIMA",AX=0005h"OPTIMA"
  652. SeeAlso: INT 16/AH=FFh"OPTIMA"
  653. --------I-610002-----------------------------
  654. INT 61 - Banyan VINES - 3270 INTERFACE
  655.     AX = 0002h
  656.     BH = function number (see #1989)
  657.     DS:CX -> argument block (except BH=00h,1Ah) (see #1991)
  658. Return: AX = status (see #1990)
  659. Notes:    Either 3270/SNA or 3270/BSC interface may use AX=0002h, depending on
  660.       which is loaded first.  The other interface will use AX=000Ah
  661.     Status codes greater than 63h indicate an inconsistency in the 3270/SNA
  662.       or 3270/BSC resident driver, which must be reloaded by the user
  663.  
  664. (Table 1989)
  665. Values for VINES 3270 interface function number:
  666.  00h "pi2reset"     reset 3270/SNA or 3270/BSC driver
  667.  02h "pi2bsc"     (3270/BSC only)
  668.  03h "pi2get"     get information stored in 3270 resident driver
  669.  04h "pi2put"     store information in 3270 resident driver
  670.  05h "pi2gcur"     get current screen position
  671.  07h "pi2sdat"     send data keystroke
  672.  08h "pi2scom"     send command keystroke
  673.  0Ah "pi2field"     get field info for arbitrary screen positions
  674.  0Fh "pi2stat"     get logical unit/device status
  675.  12h "pi2nlus"     determine logical unit/device assignment
  676.  13h "pi2gate"     specifies comm port address to gateway service
  677.  14h "pi2attach" attach a logical unit/device
  678.  15h "pi2sdev"     save logical unit/device info in resident driver
  679.         (not supported in >3.0)
  680.  16h "pi2gdev"     get device information (not supported in >3.0)
  681.  17h "pi2luinfo" get info about specific logical unit/device
  682.  18h "pi2gerr"     get finer error detail
  683.  19h "pi2dhold"     (3270/SNA only)  holds a 3270 device
  684.  1Ah "pi2shut"     release memory-resident module
  685.  1Ch "pi2sprof"     save profile info in res driver (not supp in >3.0)
  686.  1Dh "pi2gprof"     get prevsly stored profile info (not supp in >3.0)
  687.  
  688. (Table 1990)
  689. Values for VINES 3270 status:
  690.  0000h    successful
  691.  000Bh    invalid parameter or data does not fit data area
  692.  000Ch    another code path currently active in resident driver
  693.  000Dh    operation currently not allowed
  694.  0032h    encountered connection disconnect error
  695.  0033h    encountered "sosend" completion error
  696.  0034h    encountered "sosend" communication error
  697.  0035h    attach request refused.    extended error info via "pi2gerr":
  698.     01h resource unavailable
  699.     02h invalid type
  700.     03h version mismatch
  701.     04h invalid logical unit number
  702.     05h error during ARL processing
  703.     06h no access for user
  704.  0071h    encountered "sosock" error
  705.  0072h    encountered unrecognizable error
  706.  0073h    encountered "sowait" error (extended info via "pi2gerr")
  707.  0074h    encountered invalid type-of-request on "sowait"
  708.  0075h    encountered "sorec" error (extended info via "pi2gerr")
  709.  0076h    encountered "sorec" completion error (ext info via "pi2gerr")
  710.  0077h    encountered connection request
  711.  0078h    encountered unrecognizable data
  712.  0079h    encountered unknown connection ID (ext info via "pi2gerr")
  713. SeeAlso: #1968
  714.  
  715. Format of argument block for BH=03h,04h:
  716. Offset    Size    Description    (Table 1991)
  717.  00h    WORD    size of data area (max 256)
  718.  02h  N BYTEs    data area
  719. SeeAlso: #1992,#1993,#1994
  720.  
  721. Format of argument block for BH=05h:
  722. Offset    Size    Description    (Table 1992)
  723.  00h    WORD    logical unit/device number
  724.  02h    WORD    pointer to WORD buffer for cursor index
  725.  04h    WORD    pointer to BYTE buffer for current field attribute
  726. SeeAlso: #1991,#1993,#1994
  727.  
  728. Format of argument block for BH=07h:
  729. Offset    Size    Description    (Table 1993)
  730.  00h    WORD    logical unit/device number
  731.  02h    WORD    ASCII data byte
  732.  04h    WORD    pointer to WORD count of characters which will need updating
  733. SeeAlso: #1991,#1992,#1994
  734.  
  735. Format of argument block for BH=08h:
  736. Offset    Size    Description    (Table 1994)
  737.  00h    WORD    logical unit/device number
  738.  02h    WORD    3270 keystroke (see #1995)
  739. SeeAlso: #1991,#1992,#1993,#1996
  740.  
  741. (Table 1995)
  742. Values for 3270 keystroke:
  743.  0000h    Enter
  744.  0001h    Clear
  745.  0002h    PA1
  746.  0003h    PA2
  747.  0004h    PA3
  748.  0005h    PF1
  749.  ...
  750.  001Ch    PF24
  751.  001Dh    CSELECT (cursor select)
  752.  001Eh    Insert
  753.  001Fh    Delete
  754.  0020h    EOField
  755.  0021h    EINPUT (erase input)
  756.  0022h    Reset
  757.  0023h    Attention
  758.  0024h    SysReq
  759.  0025h    Duplicate
  760.  0026h    Fieldmark
  761.  0027h    Home
  762.  0028h    NextLine
  763.  0029h    Tab
  764.  002Ah    BackTab
  765.  002Bh    cursor up
  766.  002Ch    cursor down
  767.  002Dh    cursor right
  768.  002Eh    cursor left
  769.  002Fh    double cursor right
  770.  0030h    double cursor left
  771.  0031h    PRINT
  772.  0032h    CANCEL
  773.  0033h    Backspace    
  774.  
  775. Format of argument block for BH=0Ah:
  776. Offset    Size    Description    (Table 1996)
  777.  00h    WORD    logical unit/device number
  778.  02h    WORD    screen index
  779.  04h    WORD    pointer to WORD buffer for field length
  780.  06h    WORD    pointer to WORD buffer for offset in screen of field start
  781. SeeAlso: #1994,#1997
  782.  
  783. Format of argument block for BH=0Fh:
  784. Offset    Size    Description    (Table 1997)
  785.  00h    WORD    logical unit/device number
  786.  02h    WORD    clear mask (clear these bits of status after returning status)
  787.  04h    WORD    pointer to WORD buffer for device status (see #1998)
  788. SeeAlso: #1996,#1999
  789.  
  790. Bitfields for Banyan 3270 device status:
  791. Bit(s)    Description    (Table 1998)
  792.  10    status modified
  793.  9    buffer modified
  794.  8    set cursor
  795.  5    sound alarm
  796.  1-0    size of print line for printer logical units
  797.     00  unformatted line
  798.     01  40-character line
  799.     10  64-character line
  800.     11  80-character line
  801.  
  802. Format of argument block for BH=12h:
  803. Offset    Size    Description    (Table 1999)
  804.  00h    WORD    pointer to WORD buffer for number of logical units or devices
  805.  02h    WORD    pointer to WORD buffer for version number
  806.  04h    WORD    pointer to 64-byte buffer for logical unit/device list
  807. SeeAlso: #1997,#2000
  808.  
  809. Format of argument block for BH=13h:
  810. Offset    Size    Description    (Table 2000)
  811.  00h 16 BYTEs    communications port address (see #1971)
  812. SeeAlso: #1999,#2001
  813.  
  814. Format of argument block for BH=14h:
  815. Offset    Size    Description    (Table 2001)
  816.  00h    WORD    logical unit/device number
  817.         0000h attach any free device of the specified type
  818.  02h    WORD    logical unit/device type
  819.         (3270/SNA) 01h, 02h, or 03h
  820.         (3270/BSC) 02h display
  821.         (3270/BSC) 03h printer
  822.  04h    WORD    pointer to WORD buffer for attached logical unit/device number
  823. SeeAlso: #2000,#2002
  824.  
  825. Format of argument block for BH=16h:
  826. Offset    Size    Description    (Table 2002)
  827.  00h    WORD    pointer to 18-byte buffer for device block (see #2007)
  828.         first WORD must be set to desired logical unit/device number
  829. SeeAlso: #2001,#2003
  830.  
  831. Format of argument block for BH=17h:
  832. Offset    Size    Description    (Table 2003)
  833.  00h    WORD    logical unit/device number
  834.  02h    WORD    pointer to information block in caller's DS (see #2008)
  835. SeeAlso: #2002,#2004
  836.  
  837. Format of argument block for BH=18h:
  838. Offset    Size    Description    (Table 2004)
  839.  00h    WORD    pointer to WORD buffer for major error code
  840.  02h    WORD    pointer to WORD buffer for minor error code
  841. SeeAlso: #2003,#2005
  842.  
  843. Format of argument block for BH=19h:
  844. Offset    Size    Description    (Table 2005)
  845.  00h    WORD    logical unit/device number
  846. SeeAlso: #2004,#2006
  847.  
  848. Format of argument block for BH=1Ch,1Dh:
  849. Offset    Size    Description    (Table 2006)
  850.  00h    WORD    pointer to profile block in caller's DS (see #2011)
  851. SeeAlso: #1991,#2005
  852.  
  853. Format of device block, argument block for BH=15h:
  854. Offset    Size    Description    (Table 2007)
  855.  00h    WORD    logical unit/device number
  856.  02h    WORD    logical unit/device type
  857.  04h    WORD    display model number
  858.  06h    WORD    numeric checking
  859.  08h    WORD    status line
  860.  0Ah    BYTE    unprotected normal field attribute
  861.  0Bh    BYTE    unprotected intensified field attribute
  862.  0Ch    BYTE    protected normal field attribute
  863.  0Dh    BYTE    protected intensified field attribute
  864.  0Eh    WORD    reserved
  865.  10h    WORD    printer port number
  866.  
  867. Format of information block:
  868. Offset    Size    Description    (Table 2008)
  869.  00h    WORD    device model number
  870.  02h    DWORD    screen buffer pointer
  871.  06h    DWORD    status line pointer (see #2009)
  872.  0Ah    DWORD    reserved
  873.  
  874. Format of Banyan VINES 3270 status line:
  875. Offset    Size    Description    (Table 2009)
  876.  00h    BYTE    comm line status
  877.         00h inactive
  878.         01h active
  879.  01h    BYTE    activation level
  880.         01h physical unit activated
  881.         02h logical unit also activated
  882.         03h session is bound
  883.  02h    BYTE    data traffic state
  884.         00h inactive
  885.         01h active
  886.  03h    BYTE    screen ownership
  887.         00h SLU->PLU session owns screen
  888.         01h SLU->SSCP session owns screen
  889.  04h    BYTE    keyboard status (see #2010)
  890.  05h    BYTE    insert mode
  891.         01h if in insert mode
  892.  06h    BYTE    numeric
  893.         01h if current screen buffer is numeric only
  894.  07h    BYTE    printer status
  895.         00h printer not assigned
  896.         01h printer is inactive
  897.         02h printer error
  898.         03h currently printing
  899.         04h printer is busy
  900.         05h printer is very busy
  901.  08h    BYTE    printer assignment
  902.  09h    BYTE    maximum size of network name
  903.  0Ah  N BYTEs    ASCIZ network name
  904.     BYTE    maximum size of message window
  905.       M BYTEs    null-terminated message window
  906.     BYTE    code set
  907.         00h EBCDIC
  908.         01h ASCII
  909.       M BYTEs    extended attributes
  910.         01h extended attributes are in effect (stored at screen+1920)
  911.             each extended attribute specifies
  912.             bits 0,1: 00=normal, 01=blink, 10=reverse, 11=underscor
  913.             bits 2-4: 000=default,001=blue,010=red,011=pink,
  914.                   100=green,101=turquoise,110=yellow,111=white
  915.     BYTE    extended color
  916.         01h other than base color is in effect
  917.  
  918. (Table 2010)
  919. Values for Banyan VINES 3270 keyboard status:
  920.  00h    UNLOCK - ready to accept data
  921.  01h    TIME - aid was struck
  922.  02h    SYSTEM - received response no restore
  923.  03h    FUNCTION - unavailable keyboard function
  924.  04h    INPUT - not currently used
  925.  05h    ENDFIELD - field filled in insert mode
  926.  06h    PROTECTED - attempt to enter in protected field
  927.  07h    NUMERIC - attempt to enter in numeric field
  928.  08h    PROGRAM - error in outbound data stream
  929.  
  930. Format of Banyan VINES 3270 profile block:
  931. Offset    Size    Description    (Table 2011)
  932.  00h 64 BYTEs    gateway service name
  933.  40h 16 BYTEs    gateway comm port address
  934.  50h    WORD    primary logical unit number
  935.  52h    WORD    secondary logical unit type
  936.  54h    WORD    secondary logical unit number
  937.  56h    WORD    printer assignment
  938.  58h 50 BYTEs    keyboard definitions filename
  939. --------V-610002-----------------------------
  940. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - END ZOOM
  941.     AX = 0002h
  942. Desc:    switches off zoom and returns window to its original state
  943. Range:    unknown
  944. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  945.       obtained by calling INT 16/AH=FFh
  946.     not all vendors include the Tseng TSR which supports these functions
  947. SeeAlso: AX=0000h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  948. --------N-610003SF00-------------------------
  949. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INIT USER BUFFER PTR INFO
  950.     AX = 0003h subfn 00h
  951.     DS:BX -> argument block (see #2013)
  952. Return: AX = status (see #2012)
  953. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=08h,AX=0003h/SF=0Dh
  954.  
  955. (Table 2012)
  956. Values for VINES function status:
  957.  0000h    successful
  958.  000Bh    invalid session ID
  959.  000Ch    session not active
  960.  000Dh    invalid request type
  961.  000Eh    invalid parameters
  962.  000Fh    out of heap space
  963.  0010h    timeout on send
  964.  0011h    Banyan communications error
  965.  0012h    session not waiting for host
  966.  0013h    session is active
  967.  0014h    duplicate suspend session request
  968.  0015h    no session suspended
  969.  0016h    ring data buffer full
  970.  0017h    printer error encountered
  971.  0018h    Banyan communications error
  972.  0019h    unable to make connection
  973.  001Ah    no ring buffer specified at startup
  974.  001Bh    service is down
  975.  001Ch    invalid service name
  976.  001Dh    service is closed
  977.  001Eh    invalid connection name
  978.  001Fh    max session limit reached for service
  979.  0020h    access rights list for connection/dialout does not include this user
  980.  0021h    service not responding
  981.  0022h    missing telephone number
  982. SeeAlso: #1968,#2016
  983.  
  984. Format of VINES argument block:
  985. Offset    Size    Description    (Table 2013)
  986.  00h    BYTE    session ID (00h)
  987.  01h    BYTE    00h (func "initialize user buffer pointer information area")
  988.  02h    WORD    -> user buffer ptr info area in caller's current DS (see #2014)
  989.  
  990. Format of user buffer ptr info area:
  991. Offset    Size    Description    (Table 2014)
  992.  00h    WORD    flags
  993.         0000h don't read interface's data buffer
  994.         0001h read data buffer
  995.  02h    DWORD    pointer to ring buffer
  996.  06h    WORD    length of ring buffer
  997.  08h    WORD    ring buffer offset to last byte read by caller
  998.  0Ah    DWORD    pointer to WORD containing offset of last byte
  999.           in ring buffer filled
  1000.  0Eh    DWORD    pointer to screen buffer
  1001.  12h    DWORD    pointer to field containing cursor position
  1002.  16h    DWORD    pointer to terminal status area (see #2015)
  1003.  
  1004. Format of VINES terminal status area:
  1005. Offset    Size    Description    (Table 2015)
  1006.  00h    BYTE    status of session: 4Eh=oNline, 46h=oFfline, 57h=Waiting
  1007.  01h    BYTE    terminal type (00h=VT100, 01h=TTY, 02h=VT52, 03h=IBM3101)
  1008.  02h    BYTE    current keypad mode (VT100,VT52 only)
  1009.         4Eh ("N") numeric mode
  1010.         41h ("A") application mode
  1011.  03h  4 BYTEs    current state of LEDs (VT100 only)
  1012.         00h off
  1013.         01h on
  1014.  07h    WORD    line error count
  1015.  09h    WORD    primary error code (see #2016)
  1016.  0Bh    WORD    secondary error code
  1017.  
  1018. (Table 2016)
  1019. Values for VINES primary error code:
  1020.  0000h    no error
  1021.  0001h    unable to make connection
  1022.  0002h    communications error, restart session
  1023.  0003h    async terminal emulation service unavailable
  1024.  0004h    lost carrier
  1025.  0005h    all matching lines busy
  1026.  0006h    no lines defined for connection name
  1027.  0007h    no dial lines available on server
  1028.  0008h    no matching dial lines available
  1029.  0009h    out of heap space
  1030.  000Ah    service error encountered
  1031.  000Bh    timed out waiting to connect
  1032.  000Ch    communications error
  1033.  000Dh    communications error
  1034.  000Eh    host wants file transferred to/from PC
  1035.  000Fh    host software changed session parameter
  1036.  0010h    host software changed tap settings
  1037.  0011h    host software changed LED indicator
  1038.  0012h    host software changed display background (secondary error code 00h for
  1039.       white on black, 01h for black on white)
  1040.  0013h    host software changed display option (secondary error code 00h for off,
  1041.       01h for on)
  1042.  0014h    communications error
  1043.  0015h    communications error
  1044.  0016h    unable to make connection
  1045.  0017h    unable to make connection
  1046. SeeAlso: #2012
  1047. --------N-610003SF01-------------------------
  1048. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SEND TO HOST
  1049.     AX = 0003h subfn 01h
  1050.     DS:BX -> argument block (see #2017)
  1051. Return: AX = status (see #2012)
  1052. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=02h,AX=0003h/SF=14h
  1053.  
  1054. Format of VINES argument block for Function 0003h subfunction 01h:
  1055. Offset    Size    Description    (Table 2017)
  1056.  00h    BYTE    session ID (00h)
  1057.  01h    BYTE    01h (function "send to host")
  1058.  02h    BYTE    type
  1059.         00h ASCII byte
  1060.         01h ASCII string
  1061.         02h terminal function code
  1062.         03h up arrow
  1063.         04h down arrow
  1064.         05h left arrow
  1065.         06h right arrow
  1066.         07h break
  1067.  03h  N BYTEs    type-specific info (see #2018)
  1068.  
  1069. Format of type-specific info:
  1070. Offset    Size    Description    (Table 2018)
  1071. ---ASCII byte---
  1072.  03h    BYTE    byte to send to host
  1073. ---ASCII string---
  1074.  03h    WORD    length of string
  1075.  05h    WORD    pointer to string
  1076. ---terminal function code (VT52/VT100)---
  1077.  03h    BYTE    function code
  1078.         00h keypad 0
  1079.         01h keypad 1
  1080.         ...
  1081.         09h keypad 9
  1082.         0Ah keypad -
  1083.         0Bh keypad ,
  1084.         0Ch keypad .
  1085.         0Dh keypad ENTER
  1086.         0Eh PF1
  1087.         0Fh PF2
  1088.         10h PF3
  1089.         11h PF4
  1090. ---terminal function code (IBM3101)---
  1091.  03h    BYTE    function code
  1092.         00h PF1
  1093.         ...
  1094.         07h PF8
  1095.         08h Home
  1096. SeeAlso: #2017
  1097. --------N-610003SF02-------------------------
  1098. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "CONTROL MONITOR"
  1099.     AX = 0003h subfn 02h
  1100.     DS:BX -> argument block (see #2019)
  1101. Return: AX = status (see #2012)
  1102. SeeAlso: AX=0003h/SF=03h,AX=0003h/SF=05h
  1103.  
  1104. Format of VINES argument block for Function 0003h subfunction 02h:
  1105. Offset    Size    Description    (Table 2019)
  1106.  00h    BYTE    session ID (00h)
  1107.  01h    BYTE    02h (function "control monitor")
  1108.  02h    BYTE    display flag
  1109.         00h don't display data received from host
  1110.         01h display data
  1111. --------N-610003SF03-------------------------
  1112. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - "FLOW CONTROL DATA"
  1113.     AX = 0003h subfn 03h
  1114.     DS:BX -> argument block (see #2020)
  1115. Return: AX = status (see #2012)
  1116. Desc:    this function permits the caller to freeze/unfreeze the display and
  1117.       the ring buffer
  1118. SeeAlso: AX=0003h/SF=02h,AX=0003h/SF=06h
  1119.  
  1120. Format of VINES argument block for Function 0003h subfunction 03h:
  1121. Offset    Size    Description    (Table 2020)
  1122.  00h    BYTE    session ID (00h)
  1123.  01h    BYTE    03h (function "flow control data")
  1124.  02h    BYTE    flow control flag
  1125.         00h allow characters to be put into display or ring buffer
  1126.         01h don't place any more characters into display or ring buffer
  1127. --------N-610003SF04-------------------------
  1128. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - END ACTIVE SESSION
  1129.     AX = 0003h subfn 04h
  1130.     DS:BX -> argument block (see #2021)
  1131. Return: AX = status (see #2012)
  1132. SeeAlso: AX=0003h/SF=0Ah,AX=0003h/SF=0Dh,AX=0003h/SF=0Fh
  1133.  
  1134. Format of VINES argument block for ending active session:
  1135. Offset    Size    Description    (Table 2021)
  1136.  00h    BYTE    session ID (00h)
  1137.  01h    BYTE    04h (function "end active session")
  1138. --------N-610003SF05-------------------------
  1139. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SESSION PARAMETER
  1140.     AX = 0003h subfn 05h
  1141.     DS:BX -> argument block (see #2022)
  1142. Return: AX = status (see #2012)
  1143. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=06h,AX=0003h/SF=08h
  1144.  
  1145. Format of VINES argument block for setting session parameters:
  1146. Offset    Size    Description    (Table 2022)
  1147.  00h    BYTE    session ID (00h)
  1148.  01h    BYTE    05h (function "set session parameter")
  1149.  02h    BYTE    parameter number (see #2023)
  1150.  03h    BYTE    new parameter value
  1151.  
  1152. (Table 2023)
  1153. Values for parameter number:
  1154.  00h    line speed (00h=any, 01h=50, 02h=110, 03h=134.5, 04h=150,
  1155.           05h=300, 06h=600, 07h=1200, 08h=2400, 09h=4800, 0Ah=9600)
  1156.  01h    parity (00h=none, 01h=odd, 02h=even)
  1157.  02h    duplex (00h=full, 01h=half)
  1158.  03h    character size (00h=7 bits, 01h=8 bits)
  1159.  04h    stop bits (00h=1, 01h=2)
  1160.  05h    XON/XOFF flow control (00h=no, 01h=yes)
  1161.  07h    intercharacter delay in tenths of a second
  1162.  08h    interline delay in tenths of a second
  1163.  09h    auto linefeed (00h=no, 01h=yes)
  1164.  0Ah    filter control characters (00h=no, 01h=yes)
  1165.  0Bh    terminal type (00h=VT100,01h=glassTTY,02h=VT52,03h=IBM3101)
  1166.  0Ch    auto wrap (00h=no, 01h=yes)
  1167.  0Dh    cursor shape (00h=underscore, 01h=block)
  1168.  0Eh    character set (00h=UK, 01h=US ASCII)
  1169.  0Fh    printer port (00h=LPT1, 01h=LPT2, 02h=LPT3)
  1170. SeeAlso: #2022
  1171. --------N-610003SF06-------------------------
  1172. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET SESSION PARAMETER
  1173.     AX = 0003h subfn 06h
  1174.     DS:BX -> argument block (see #2024)
  1175. Return: AX = status (see #2012)
  1176. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=05h,AX=0003h/SF=07h
  1177.  
  1178. Format of VINES argument block for getting session parameters:
  1179. Offset    Size    Description    (Table 2024)
  1180.  00h    BYTE    session ID (00h)
  1181.  01h    BYTE    06h (function "get session parameter")
  1182.  02h    BYTE    parameter number (see #2023)
  1183.  03h    BYTE    (ret) current parameter value
  1184. --------N-610003SF07-------------------------
  1185. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET TAB SETTINGS
  1186.     AX = 0003h subfn 07h
  1187.     DS:BX -> argument block (see #2025)
  1188. Return: AX = status (see #2012)
  1189. SeeAlso: AX=0003h/SF=05h,AX=0003h/SF=08h
  1190.  
  1191. Format of VINES argument block for setting tab settings:
  1192. Offset    Size    Description    (Table 2025)
  1193.  00h    BYTE    session ID (00h)
  1194.  01h    BYTE    07h (function "set tab settings")
  1195.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1196.           each byte = 00h if no tab, 01h if tab at that position
  1197. --------N-610003SF08-------------------------
  1198. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET TAB SETTINGS
  1199.     AX = 0003h subfn 08h
  1200.     DS:BX -> argument block (see #2026)
  1201. Return: AX = status (see #2012)
  1202. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=07h
  1203.  
  1204. Format of VINES argument block for getting tab settings:
  1205. Offset    Size    Description    (Table 2026)
  1206.  00h    BYTE    session ID (00h)
  1207.  01h    BYTE    08h (function "get tab settings")
  1208.  02h    WORD    pointer to 80-byte buffer in caller's current DS
  1209.         each byte set to 00h if no tab, 01h if tab at that position
  1210. --------N-610003SF09-------------------------
  1211. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - REFRESH EMULATION SCREEN
  1212.     AX = 0003h subfn 09h
  1213.     DS:BX -> argument block (see #2027)
  1214. Return: AX = status (see #2012)
  1215. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Bh
  1216.  
  1217. Format of VINES argument block for Function 0003h subfunction 09h:
  1218. Offset    Size    Description    (Table 2027)
  1219.  00h    BYTE    session ID (00h)
  1220.  01h    BYTE    09h (function "refresh emulation screen")
  1221. --------N-610003SF0A-------------------------
  1222. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SUSPEND SESSION TEMPORARILY
  1223.     AX = 0003h subfn 0Ah
  1224.     DS:BX -> argument block (see #2028)
  1225. Return: AX = status (see #2012)
  1226. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=09h,AX=0003h/SF=0Bh,AX=0003h/SF=0Dh
  1227.  
  1228. Format of VINES argument block:
  1229. Offset    Size    Description    (Table 2028)
  1230.  00h    BYTE    session ID (00h)
  1231.  01h    BYTE    0Ah (function "suspend session temporarily")
  1232.  02h    WORD    size of session information to be saved
  1233.  04h    WORD    pointer to buffer in caller's DS
  1234. --------N-610003SF0B-------------------------
  1235. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESUME SUSPENDED SESSION
  1236.     AX = 0003h subfn 0Bh
  1237.     DS:BX -> argument block (see #2029)
  1238. Return: AX = status (see #2012)
  1239. SeeAlso: AX=0003h/SF=09h,AX=0003h/SF=0Ah
  1240.  
  1241. Format of VINES argument block:
  1242. Offset    Size    Description    (Table 2029)
  1243.  00h    BYTE    session ID (00h)
  1244.  01h    BYTE    0Bh (function "restore previously suspended session")
  1245.  02h    WORD    size of buffer into which session info is restored
  1246.  04h    WORD    pointer to buffer in caller's DS
  1247. --------N-610003SF0C-------------------------
  1248. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - SET SCROLL LOCK CHECKING
  1249.     AX = 0003h subfn 0Ch
  1250.     DS:BX -> argument block (see #2030)
  1251. Return: AX = status (see #2012)
  1252. SeeAlso: AX=0003h/SF=00h
  1253.  
  1254. Format of VINES argument block:
  1255. Offset    Size    Description    (Table 2030)
  1256.  00h    BYTE    session ID (00h)
  1257.  01h    BYTE    0Ch (function "set state of scroll lock checking")
  1258.  02h    BYTE    check_scroll_lock flag
  1259.         00h off
  1260.         01h on (display of host data stopped while ScrollLock on)
  1261. --------N-610003SF0D-------------------------
  1262. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - EXIT EMULATION
  1263.     AX = 0003h subfn 0Dh
  1264.     DS:BX -> argument block (see #2031)
  1265. Return: AX = status (see #2012)
  1266. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Ah
  1267.  
  1268. Format of VINES argument block:
  1269. Offset    Size    Description    (Table 2031)
  1270.  00h    BYTE    session ID (00h)
  1271.  01h    BYTE    0Dh (function "exit emulation")
  1272. --------N-610003SF0E-------------------------
  1273. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON CHAR FROM HOST
  1274.     AX = 0003h subfn 0Eh
  1275.     DS:BX -> argument block (see #2032)
  1276. Return: AX = status (see #2012)
  1277. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=14h
  1278.  
  1279. Format of VINES argument block:
  1280. Offset    Size    Description    (Table 2032)
  1281.  00h    BYTE    session ID (00h)
  1282.  01h    BYTE    0Eh (function "interrupt on character from host")
  1283.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1284.  06h    DWORD    stack pointer to use when call is made
  1285. --------N-610003SF0F-------------------------
  1286. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START A SESSION
  1287.     AX = 0003h subfn 0Fh
  1288.     DS:BX -> argument block (see #2033)
  1289. Return: AX = status (see #2012)
  1290. SeeAlso: AX=0003h/SF=04h,AX=0003h/SF=0Bh
  1291.  
  1292. Format of VINES argument block:
  1293. Offset    Size    Description    (Table 2033)
  1294.  00h    BYTE    session ID (00h)
  1295.  01h    BYTE    0Fh (function "start a session")
  1296.  02h    WORD    pointer to information area in caller's current DS (see #2034)
  1297.  
  1298. Format of VINES information area:
  1299. Offset    Size    Description    (Table 2034)
  1300.  00h    WORD    length of service name
  1301.  02h    WORD    pointer to service name in caller's DS
  1302.  04h    BYTE    type of connection (00h=connection name, 01h=dialout)
  1303.  05h    WORD    length of connection name/telephone number
  1304.  07h    WORD    pointer to connection name/telephone number
  1305. --------N-610003SF10-------------------------
  1306. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP PRINTING
  1307.     AX = 0003h subfn 10h
  1308.     DS:BX -> argument block (see #2035)
  1309. Return: AX = status (see #2012)
  1310. SeeAlso: AX=0003h/SF=06h,AX=0003h/SF=13h
  1311.  
  1312. Format of VINES argument block:
  1313. Offset    Size    Description    (Table 2035)
  1314.  00h    BYTE    session ID (00h)
  1315.  01h    BYTE    10h (function "start/stop printing of data received from host")
  1316.  02h    WORD    print capture flag (00h=off, 01h=on)
  1317. --------N-610003SF11-------------------------
  1318. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET FILE TRANSFER PARAMETERS
  1319.     AX = 0003h subfn 11h
  1320.     DS:BX -> argument block (see #2036)
  1321. Return: AX = status (see #2012)
  1322. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1323.  
  1324. Format of VINES argument block:
  1325. Offset    Size    Description    (Table 2036)
  1326.  00h    BYTE    session ID (00h)
  1327.  01h    BYTE    11h (function "get file transfer parameters")
  1328.  02h    WORD    pointer to info area in caller's current DS (see #2037)
  1329.  
  1330. Format of VINES info area:
  1331. Offset    Size    Description    (Table 2037)
  1332.  00h    BYTE    protocol flag (00h none, 01h Kermit)
  1333.  01h    BYTE    direction flag (00h send, 01h receive)
  1334.  02h    BYTE    length of null-terminated PC filename
  1335.  03h    DWORD    pointer to null-terminated PC filename
  1336.  07h    BYTE    length of null-terminated host filename
  1337.  08h    DWORD    pointer to null-terminated host filename
  1338. --------N-610003SF12-------------------------
  1339. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - GET CONNECTION INFORMATION
  1340.     AX = 0003h subfn 12h
  1341.     DS:BX -> argument block (see #2038)
  1342. Return: AX = status (see #2012)
  1343. SeeAlso: AX=0003h/SF=11h,AX=0003h/SF=15h
  1344.  
  1345. Format of VINES argument block:
  1346. Offset    Size    Description    (Table 2038)
  1347.  00h    BYTE    session ID (00h)
  1348.  01h    BYTE    12h (function "get connection information")
  1349.  02h    WORD    offset of buffer for connection information (see #2039)
  1350.  
  1351. Format of VINES connection information:
  1352. Offset    Size    Description    (Table 2039)
  1353.  00h    WORD    length of service name (returned)
  1354.  02h    WORD    pointer to 64-byte buffer for service name
  1355.  04h    BYTE    type of connection
  1356.         00h connection name
  1357.         01h dialout
  1358.  05h    WORD    length of connection name/telephone number
  1359.  07h    WORD    pointer to 64-byte buffer for name/telno
  1360.  09h    BYTE    server line number being used (returned)
  1361. --------N-610003SF13-------------------------
  1362. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - START/STOP TRACING TRAFFIC
  1363.     AX = 0003h subfn 13h
  1364.     DS:BX -> argument block (see #2040)
  1365. Return: AX = status (see #2012)
  1366. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=0Eh
  1367.  
  1368. Format of VINES argument block:
  1369. Offset    Size    Description    (Table 2040)
  1370.  00h    BYTE    session ID (00h)
  1371.  01h    BYTE    13h (function "start/stop tracing data traffic in session")
  1372.  02h    BYTE    trace flag (00h=off, 01h=on)
  1373. --------N-610003SF14-------------------------
  1374. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - INTERRUPT ON HOST MESSAGE
  1375.     AX = 0003h subfn 14h
  1376.     DS:BX -> argument block (see #2041)
  1377. Return: AX = status (see #2012)
  1378. SeeAlso: AX=0003h/SF=0Eh
  1379.  
  1380. Format of VINES argument block:
  1381. Offset    Size    Description    (Table 2041)
  1382.  00h    BYTE    session ID (00h)
  1383.  01h    BYTE    14h (function "interrupt on message from host")
  1384.  02h    DWORD    pointer to routine to be called (0000h:0000h = don't call)
  1385.  06h    DWORD    stack pointer to use when call is made
  1386. --------N-610003SF15-------------------------
  1387. INT 61 - Banyan VINES - ASYNC TERMINAL EMULATION - RESET ERROR
  1388.     AX = 0003h subfn 15h
  1389.     DS:BX -> argument block (see #2042)
  1390. Return: AX = status (see #2012)
  1391. SeeAlso: AX=0003h/SF=00h,AX=0003h/SF=12h
  1392.  
  1393. Format of VINES argument block:
  1394. Offset    Size    Description    (Table 2042)
  1395.  00h    BYTE    session ID (00h)
  1396.  01h    BYTE    15h (function "reset error")
  1397. --------V-610003-----------------------------
  1398. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - REPORT ZOOM FACTOR
  1399.     AX = 0003h
  1400. Return: AX = zoom factor
  1401. Desc:    returns the current zoom factor
  1402. Range:    unknown
  1403. Notes:    INT 61h is the default interrupt; the actual interrupt number can be
  1404.       obtained by calling INT 16/AH=FFh
  1405.     not all vendors include the Tseng TSR which supports these functions
  1406. SeeAlso: AX=0000h"OPTIMA",AX=0005h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1407. --------N-610004-----------------------------
  1408. INT 61 - Banyan VINES - FILE SERVICE CONTROL
  1409.     AX = 0004h
  1410.     DS:DX -> request block (see #2044)
  1411. Return: AX = status (see #2043)
  1412. Notes:    This service is handled by the redirector
  1413.     The request dispatch table contains dummy entries for requests 0Ah,
  1414.       0Dh, 15h, 19h, and 1Ah, which always return error 0033h (invalid
  1415.       request ID)
  1416.  
  1417. (Table 2043)
  1418. Values for Banyan VINES file service control status code:
  1419.  0000h    successful
  1420.  0002h    file not found
  1421.  0003h    path not found
  1422.  000Fh    invalid drive
  1423.  0015h    drive not ready
  1424.  0033h    invalid request ID
  1425.  0034h    drive not connected
  1426.  0037h    drive number out of range
  1427.  0038h    drive number not available
  1428.  003Ah    invalid operation
  1429.  0055h    drive already connected
  1430.  0057h    invalid number of entries
  1431.  
  1432. Format of Banyan VINES file service request block:
  1433. Offset    Size    Description    (Table 2044)
  1434.  00h    WORD    request ID (1..28)
  1435.  02h  n BYTES    additional parameters and result buffer
  1436. --------N-610004SF0001-----------------------
  1437. INT 61 - Banyan VINES - SET DRIVE CONNECTION
  1438.     AX = 0004h subfn 0001h
  1439.     DS:DX -> request block (see #2045)
  1440. Return: AX = status (0000h,0037h,0038h,0055h) (see #2043)
  1441. Desc:    Maps the specified file service to a DOS drive letter
  1442. Note:    If an empty service name is specified, an existing connection will
  1443.       be removed
  1444. SeeAlso: AX=0004h/SF=0002h
  1445.  
  1446. Format of VINES Function 0004h/Subfunction 0001h request block:
  1447. Offset    Size    Description    (Table 2045)
  1448.  00h    WORD    0001h
  1449.  02h    BYTE    drive number (0=default, 1=A, ...)
  1450.  03h 16    BYTEs    reserved
  1451.  13h 64    BYTEs    null-terminated file service name
  1452.  53h  5    BYTEs    reserved
  1453. --------N-610004SF0002-----------------------
  1454. INT 61 - Banyan VINES - GET DRIVE CONNECTION
  1455.     AX = 0004h subfn 0002h
  1456.     DS:DX -> request block (see #2046)
  1457. Return: AX = status (0000h,0034h,0037h) (see #2043)
  1458. Desc:    Returns the StreetTalk name of the associated file service
  1459. SeeAlso: AX=0004h/SF=0001h,AX=0004h/SF=0003h
  1460.  
  1461. Format of VINES Function 0004h/Subfunction 0002h request block:
  1462. Offset    Size    Description    (Table 2046)
  1463.  00h    WORD    0002h
  1464.  02h    BYTE    drive number (0=default, 1=A, ...)
  1465.  03h 16    BYTEs    reserved
  1466.  13h 64    BYTEs    buffer for null-terminated file service name
  1467.  53h  5    BYTEs    reserved
  1468. --------N-610004SF0003-----------------------
  1469. INT 61 - Banyan VINES - GET NETWORK DRIVE MAP
  1470.     AX = 0004h subfn 0003h
  1471.     DS:DX -> request block (see #2047)
  1472. Return: AX = status
  1473.         0000h drive map returned in request block
  1474. Desc:    Returns a bit map indicating which drive numbers are connected to a
  1475.       file service
  1476. Note:    Only bits 0-25 are significant
  1477. SeeAlso: AX=0004h/SF=0002h
  1478.  
  1479. Format of VINES Function 0004h/Subfunction 0003h request block:
  1480. Offset    Size    Description    (Table 2047)
  1481.  00h    WORD    0003h
  1482.  02h    DWORD    buffer for drive map (bit0=A, bit1=B, ...)
  1483. --------N-610004SF0004-----------------------
  1484. INT 61 - Banyan VINES - SET USER NAME
  1485.     AX = 0004h subfn 0004h
  1486.     DS:DX -> request block (see #2048)
  1487. Return: AX = status (0000h) (see #2043)
  1488. Notes:    Other side effects, if any, not known
  1489. SeeAlso: AX=0004h/SF=0005h,AX=0006h/SF=0004h,AX=0007h/BX=0005h
  1490.  
  1491. Format of VINES Function 0004h/Subfunction 0004h request block:
  1492. Offset    Size    Description    (Table 2048)
  1493.  00h    WORD    0004h
  1494.  02h 64    BYTE    null-terminated user name
  1495. --------N-610004SF0005-----------------------
  1496. INT 61 - Banyan VINES - GET USER NAME
  1497.     AX = 0004h subfn 0005h
  1498.     DS:DX -> request block (see #2049)
  1499. Return: AX = status (see also #2043)
  1500.         0000h user name returned in request block
  1501. Desc:    Returns the StreetTalk name of the currently logged in user
  1502. SeeAlso: AX=0004h/SF=0004h,AX=0006h/SF=0004h,AX=0007h/BX=0005h
  1503. SeeAlso: AX=0004h/SF=0004h
  1504.  
  1505. Format of VINES Function 0004h/Subfunction 0005h request block:
  1506. Offset    Size    Description    (Table 2049)
  1507.  00h    WORD    0005h (subfunction "Get User Name")
  1508.  02h 64    BYTE    buffer for null-terminated user name
  1509. --------N-610004SF0006-----------------------
  1510. INT 61 - Banyan VINES - TEST DRIVE CONNECTION
  1511.     AX = 0004h subfn 0006h
  1512.     DS:DX -> request block (see #2050)
  1513. Return: AX = status (see also #2043)
  1514.         0000h connection flag returned in request block
  1515. Desc:    Returns a flag indicating if the drive is connected to a file service
  1516. SeeAlso: AX=0004h/SF=0007h
  1517.  
  1518. Format of VINES Function 0004h/Subfunction 0006h request block:
  1519. Offset    Size    Description    (Table 2050)
  1520.  00h    WORD    0006h (subfunction "Test Drive Connection")
  1521.  02h    BYTE    buffer for connection flag (1 = not connected, 2 = connected)
  1522. --------N-610004SF0007-----------------------
  1523. INT 61 - Banyan VINES - GET CONNECTION DATA STRUCTURES
  1524.     AX = 0004h subfn 0007h
  1525.     DS:DX -> request block (see #2051)
  1526. Return: AX = status (see also #2043)
  1527.         0000h pointer returned in request block
  1528.         0033h invalid request ID
  1529. Desc:    Returns pointers to various internal data structures
  1530.  
  1531. Format of VINES Function 0004h/Subfunction 0007h request block:
  1532. Offset    Size    Description    (Table 2051)
  1533.  00h    WORD    0007h
  1534.  02h    BYTE    request ID (0..7) (see #2052)
  1535.  03h    WORD    buffer for pointer segment
  1536.  05h    WORD    buffer for pointer offset
  1537. SeeAlso: #2053,#2054
  1538.  
  1539. (Table 2052)
  1540. Values for VINES pointer ID:
  1541.  00h    job file table ???
  1542.  01h    drive handle table
  1543.  02h    drive connection table
  1544.  03h    IPC port of drive Z:
  1545.  04h    end of drive connection table
  1546.  05h    ???
  1547.  06h    ???
  1548.  07h    redirector data segment (offset=0)
  1549. SeeAlso: #2051
  1550.  
  1551. Format of VINES drive handle table:
  1552. Offset    Size    Description    (Table 2053)
  1553.  00h    BYTE    handle to default drive (0 = not connected)
  1554.  01h    BYTE    handle to drive A: (0 = not connected)
  1555.     ...
  1556.  1Ah    BYTE    handle to drive Z: (0 = not connected)
  1557. SeeAlso: #2054
  1558.  
  1559. Format of VINES drive connection table:
  1560. Offset    Size    Description    (Table 2054)
  1561.  00h    WORD    file service type (?) (0001h if drive Z:, 0000h else)
  1562.  02h 16    BYTEs    IPC port (contains the server serial number)
  1563.  12h 46    BYTEs    ???
  1564.  40h 64    BYTEs    null-terminated StreetTalk name of associated file service
  1565.  80h 64    BYTEs    null-terminated root directory (/ROOT: parameter of SETDRIVE)
  1566. SeeAlso: #2053
  1567. --------N-610004SF0008-----------------------
  1568. INT 61 - Banyan VINES - GET SERVER SERIAL NUMBER
  1569.     AX = 0004h subfn 0008h
  1570.     DS:DX -> request block (see #2055)
  1571. Return: AX = status (0000h,000Fh,0015h) (see #2043)
  1572. Notes:    The server ID is extracted from the IPC port address of the associated
  1573.       file service stored in the drive connection table
  1574.     The server serial number and the server subnet number are returned in
  1575.       big-endian (Motorola) format (i.e. MSB first)
  1576. SeeAlso: AX=0004h/SF=0005h
  1577.  
  1578. Format of VINES request block for getting server serial number:
  1579. Offset    Size    Description    (Table 2055)
  1580.  00h    WORD    0008h
  1581.  02h    WORD    drive number (0=default, 1=A, ...)
  1582.  04h    DWORD    buffer for server serial number
  1583.  08h    WORD    buffer for server subnet number (always 0001h)
  1584. --------N-610004SF0009-----------------------
  1585. INT 61 - Banyan VINES - SET ??? PARAMETER
  1586.     AX = 0004h subfn 0009h
  1587.     DS:DX -> request block (see #2056)
  1588. Return: AX = status (0000h) (see #2043)
  1589. Notes:    The specified WORD parameter is copied to offset 1702h of the
  1590.       redirector code segment (revision 5.53)
  1591. SeeAlso: AX=0004h/SF=000Bh
  1592.  
  1593. Format of VINES Function 0004h/Subfunction 0009h request block:
  1594. Offset    Size    Description    (Table 2056)
  1595.  00h    WORD    0009h
  1596.  02h    WORD    parameter
  1597. --------N-610004SF000B-----------------------
  1598. INT 61 - Banyan VINES - GET ??? DRIVE PARAMETER
  1599.     AX = 0004h subfn 000Bh
  1600.     DS:DX -> request block (see #2057)
  1601. Return: AX = status (0000h,0034h,0037h) (see #2043)
  1602. Notes:    This request returns a WORD value from the drive connection table
  1603.       read from offset 0012h of the specified drive's entry (usually 0037h)
  1604. SeeAlso: AX=0004h/SF=0009h
  1605.  
  1606. Format of VINES Function 0004h/Subfunction 000Bh request block:
  1607. Offset    Size    Description    (Table 2057)
  1608.  00h    WORD    000Bh
  1609.  02h    BYTE    drive number (0=default, 1=A, ...)
  1610.  03h    WORD    buffer for parameter
  1611. --------N-610004SF000C-----------------------
  1612. INT 61 - Banyan VINES - LOGOUT FROM VINES
  1613.     AX = 0004h subfn 000Ch
  1614.     DS:DX -> request block (see #2058)
  1615. Return: AX = status 0000h (see #2043)
  1616. Desc:    Terminates a running VINES session and clears all session specific
  1617.       buffers
  1618. SeeAlso: AX=0004h/SF=0008h
  1619.  
  1620. Format of VINES Function 0004h/Subfunction 000Ch request block:
  1621. Offset    Size    Description    (Table 2058)
  1622.  00h    WORD    000Ch
  1623. --------N-610004SF000E-----------------------
  1624. INT 61 - Banyan VINES - GET ACCESS RIGHTS LIST (ARL)
  1625.     AX = 0004h subfn 000Eh
  1626.     DS:DX -> request block (see #2059)
  1627. Return: AX = status (see also #2043)
  1628.         0000h request has been processed
  1629. Desc:    Returns the owner, group, and extended access rights for the specified
  1630.       file or directory
  1631. Note:    A status of 0000h does not necessarily indicate a successful request;
  1632.       check the status word at offset 000Eh of the request block too
  1633. SeeAlso: AX=0004h/SF=000Fh
  1634.  
  1635. Format of VINES Function 0004h/Subfunction 000Eh request block:
  1636. Offset    Size    Description    (Table 2059)
  1637.  00h    WORD    000Eh (subfunction "Get Access Rights List")
  1638.  02h    BYTE    drive number (0=default, 1=A, ...)
  1639.  03h    BYTE    reserved
  1640.  04h    DWORD    pointer to path specification (drive letter ignored)
  1641.  08h    DWORD    pointer to ARL control block (see #2060)
  1642.  0Ch    WORD    buffer for number of ARL entries (1..5)
  1643.  0Eh    WORD    buffer for status (see #2061)
  1644.  
  1645. Format of ARL control block:
  1646. Offset    Size    Description    (Table 2060)
  1647.  00h 64    BYTEs    1st StreetTalk name (user, list, or service)
  1648.  40h    WORD    1st ARL
  1649.  42h 64    BYTEs    2nd StreetTalk name (user, list, or service)
  1650.  82h    WORD    2nd ARL
  1651.  84h 64    BYTEs    3rd StreetTalk name (user, list, or service)
  1652.  C4h    WORD    3rd ARL
  1653.  C6h 64    BYTEs    4th StreetTalk name (user, list, or service)
  1654. 106h    WORD    4th ARL
  1655. 108h 64    BYTEs    5th StreetTalk name (user, list, or service)
  1656. 148h    WORD    5th ARL
  1657.  
  1658. (Table 2061)
  1659. Values for VINES Get/Set Access Rights List status:
  1660.  0000h    successful
  1661.  0002h    file not found
  1662.  0003h    path not found
  1663.  003Ah    invalid operation
  1664.  0057h    invalid number of entries
  1665. --------N-610004SF000F-----------------------
  1666. INT 61 - Banyan VINES - SET ACCESS RIGHTS LIST (ARL)
  1667.     AX = 0004h subfn 000Fh
  1668.     DS:DX -> request block (see #2062)
  1669. Return: AX = status (see also #2043)
  1670.         0000h request has been processed
  1671. Desc:    Sets the owner, group, and extended access rights for the specified
  1672.       file or directory
  1673. Note:    A status of 0000h does not necessarily indicate a successful request;
  1674.       check the status word at offset 000Eh of the request block too
  1675.     If the number of ARL entries is less than 1 or greater than 5, error
  1676.       0057h (invalid number of entries) is returned
  1677. SeeAlso: AX=0004h/SF=000Eh
  1678.  
  1679. Format of VINES Function 0004h/Subfunction 000Fh request block:
  1680. Offset    Size    Description    (Table 2062)
  1681.  00h    WORD    000Fh
  1682.  02h    BYTE    drive number (0=default, 1=A, ...)
  1683.  03h    BYTE    reserved
  1684.  04h    DWORD    pointer to path specification (drive letter ignored)
  1685.  08h    DWORD    pointer to ARL control block (see #2060)
  1686.  0Ch    WORD    number of ARL entries (1..5)
  1687.  0Eh    WORD    buffer for status (see #2061)
  1688. --------N-610004SF0010-----------------------
  1689. INT 61 - Banyan VINES - FILE SERVICE CONTROL - ???
  1690.     AX = 0004h subfn 0010h
  1691.     DS:DX -> request block (see #2063)
  1692. Return: AX = status (see also #2043)
  1693.         0000h request has been processed
  1694. SeeAlso: AX=0004h/SF=000Fh
  1695.  
  1696. Format of VINES Function 0004h/Subfunction 0010h request block:
  1697. Offset    Size    Description    (Table 2063)
  1698.  00h    WORD    0010h
  1699.  02h    BYTE    drive number (0=default, 1=A, ...)
  1700.  03h    BYTE    reserved
  1701.  04h 64    BYTEs    ???
  1702.  44h 16    BYTEs    IPC port (see #1971 at AX=0001h"Sosock")
  1703. --------V-610004-----------------------------
  1704. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - ENTER SPECIFY MODE
  1705.     AX = 0004h
  1706. Range:    unknown
  1707. Notes:    Specify Mode is enabled by hot key (seeAlso below), and allows
  1708.       panning and zooming via the numeric keypad.
  1709.     INT 61 is the default interrupt; the actual interrupt number can be
  1710.       obtained by calling INT 16/AH=FFh
  1711.     not all vendors include the Tseng TSR which supports these functions
  1712. SeeAlso: AX=0000h"OPTIMA",AX=0007h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  1713. --------N-610005-----------------------------
  1714. INT 61 - Banyan VINES - PRINT SERVICE CONTROL
  1715.     AX = 0005h
  1716.     DS:DX -> request block (see #2064)
  1717. Return: AX = status
  1718.         0000h successful
  1719.         0001h network software not installed or incompatible
  1720. Note:    This service is handled by the redirector
  1721. SeeAlso: INT 2F/AX=D702h
  1722.  
  1723. Format of VINES request block for printer control:
  1724. Offset    Size    Description    (Table 2064)
  1725.  00h    WORD    function
  1726.         0201h "endspool" all data for a print job has been sent
  1727.         0205h "getactive" get currently active printer port
  1728.         0207h ??? purpose unknown; called periodically every second
  1729.  02h    WORD    number of active port (1-3)
  1730.  04h    WORD    ??? (0 for func 0201h, 3 for func 0205h)
  1731.  06h    WORD    0000h
  1732. --------V-610005-----------------------------
  1733. INT 61 - OPTIMA 1024 VGA-Sync - QUERY ZOOM WINDOW
  1734.     AX = 0005h
  1735.     BX:CX -> buffer for window parameters (see #2065)
  1736. Range:    unknown
  1737. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  1738.       obtained by calling INT 16/AH=FFh
  1739.     not all vendors include the Tseng TSR which supports these functions
  1740. SeeAlso: AX=0000h"OPTIMA",AX=0003h"OPTIMA",AX=0006h"OPTIMA"
  1741. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1742.  
  1743. Format of Optima 1024 window parameters:
  1744. Offset    Size    Description    (Table 2065)
  1745.  00h    WORD    X start of zoom window
  1746.  02h    WORD    Y start of zoom window
  1747.  04h    WORD    X end of zoom window
  1748.  06h    WORD    Y end of zoom window
  1749.  08h    WORD    current zoom factor
  1750.  0Ah    WORD    zoom offset start X
  1751.  0Ch    WORD    zoom offset start Y
  1752. --------V-610006-----------------------------
  1753. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM WINDOW
  1754.     AX = 0006h
  1755.     BX:CX -> zoom window description (see #2066)
  1756. Range:    unknown
  1757. Notes:    width of zoom window must be a multiple of the pixel replication (zoom)
  1758.       factor
  1759.     INT 61 is the default interrupt; the actual interrupt number can be
  1760.       obtained by calling INT 16/AH=FFh
  1761.     not all vendors include the Tseng TSR which supports these functions
  1762. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0005h"OPTIMA",AX=0008h"OPTIMA"
  1763. SeeAlso: INT 16/AH=FFh"OPTIMA"
  1764.  
  1765. Format of Optima 1024 zoom window description:
  1766. Offset    Size    Description    (Table 2066)
  1767.  00h    WORD    X start of zoom window
  1768.  02h    WORD    Y start of zoom window
  1769.  04h    WORD    X end of zoom window
  1770.  06h    WORD    Y end of zoom window
  1771. --------N-610006-----------------------------
  1772. INT 61 - Banyan VINES - GET ADDRESS OF INTERNAL VARIABLE
  1773.     AX = 0006h
  1774.     BX = bits 14..0: request ID (see #2067)
  1775.          bit  15:     result destination flag (0 for ES:BX, 1 for AX:BX)
  1776. Return: AX = status
  1777.         0000h successful
  1778.         000Bh invalid request
  1779.     ES:BX -> internal variable (bit 15 of BX was not set)
  1780.     AX:BX -> internal variable (bit 15 of BX was set)
  1781. Note:    This service is handled by the redirector
  1782.  
  1783. (Table 2067)
  1784. Values for request IDs:
  1785. Request    Length    Description
  1786.  0000h       1    ???
  1787.  0001h      16    StreetTalk port
  1788.  0002h       4    StreetTalk session handle
  1789.  0003h       6    colors
  1790.  0004h      64    StreetTalk name of currently logged in user
  1791.  0005h       0    old clear text password (always returns error code 000Bh)
  1792.  0006h       0    default group (not applicable)
  1793.  0007h       1    message queue count
  1794.  0008h       1    message flag
  1795.  0009h      16    TalkPort
  1796.  000Ah       2    TalkPort socket
  1797.  000Bh      64    StreetTalk name of mail service
  1798.  000Ch       2    message timeout
  1799.  000Dh       2    next message place
  1800.  000Eh     246    message queue
  1801.  000Fh      14    system nonce
  1802.  0010h       2    failed login count
  1803.  0011h       1    new mail message received
  1804.  0012h       8    mail capabilities
  1805.  0013h       3    printer port diverted
  1806.  0014h      32    international location
  1807.  0015h      16    IPC port of drive Z:
  1808.  0016h    1024    pointer to current directory table
  1809.  0017h       2    maximum number of file volume mappings
  1810.  0018h      24    routine to call back for messages
  1811.  0019h       4    current virtual machine
  1812.  001Ah      20    DOS redirector message bell tones
  1813.  001Bh       2    various flags used for internal communication
  1814.  001Ch       0    OS/2 client configuration (always returns error code 000Bh)
  1815.  001Dh       8    redirector/IFS file version
  1816.  001Eh       0    reserved (always returns error code 000Bh)
  1817.  001Fh       4    address of VVINESD.386 dispatch
  1818. --------V-610007-----------------------------
  1819. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - QUERY APPLICATION KEY
  1820.     AX = 0007h
  1821. Return: AX = current state (0000h/0001h)
  1822. Desc:    returns the current toggle state of the application (END) key in
  1823.       specify mode. E.g. in the OPTIMA AutoCAD driver, 0 means AutoCAD
  1824.       calls INT 61/AX=0001h every time the crosshair cursor moves.
  1825. Notes:    In specify mode, the END key has been reserved for applications.
  1826.     INT 61 is the default interrupt; the actual interrupt number can be
  1827.       obtained by calling INT 16/AH=FFh
  1828.     not all vendors include the Tseng TSR which supports these functions
  1829. SeeAlso: AX=0000h"OPTIMA",AX=0001h"OPTIMA",AX=0004h"OPTIMA"
  1830. SeeAlso: INT 16/AH=FFh"OPTIMA",INT 7A/AX=0001h"AutoCAD"
  1831. --------N-610007BX0000-----------------------
  1832. INT 61 - Banyan VINES - RECONNECT TO STREETTALK
  1833.     AX = 0007h
  1834.     BX = 0000h
  1835. Return: AX = status (see #2068)
  1836. SeeAlso: AX=0007h/BX=0002h
  1837.  
  1838. (Table 2068)
  1839. Values for VINES function status:
  1840.  0000h    successful
  1841.  0001h    requested handler not installed or incompatible
  1842.  000Bh    service busy
  1843.  000Ch    invalid request ID
  1844.  03E9h    incorrect name syntax
  1845.  03EAh    organization name too long
  1846.  03EBh    group name too long
  1847.  03ECh    item name too long
  1848.  03EDh    StreetTalk name too long
  1849.  03F3h    organization not found
  1850.  03F4h    group not found
  1851.  03F5h    StreetTalk name not found
  1852.  03F8h    not a StreetTalk name
  1853.  0409h    modify access denied
  1854.  040Dh    appropriate StreetTalk name unavailable
  1855.  0411h    all matching names have been returned
  1856.  0412h    some groups unavailable, all available matches returned
  1857. --------N-610007BX0001-----------------------
  1858. INT 61 - Banyan VINES - GET MM PORT FOR A SERVICE
  1859.     AX = 0007h
  1860.     BX = 0001h
  1861.     DS:DX -> StreetTalk service name (64 bytes)
  1862.     DS:DI -> 16-byte buffer for IPC port (see #1971 at AX=0001h"Sosock")
  1863. Return: AX = status (see #2068)
  1864. Notes:    This function calls AX=0007/BX=0002h with the port count set to 1 and
  1865.       the port type set to 00h
  1866. SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=000Ah
  1867. --------N-610007BX0002-----------------------
  1868. INT 61 - Banyan VINES - GET PORTS FOR A SERVICE
  1869.     AX = 0007h
  1870.     BX = 0002h
  1871.     DS:DX -> StreetTalk service name
  1872.     DS:DI -> port record block (see #2069)
  1873. Return: AX = status (see #2068)
  1874. Note:    if the requested number of ports is greater than five, it will be reset
  1875.       to five
  1876. SeeAlso: AX=0007h,BX=0001h,AX=0007h/BX=0003h,AX=0007h/BX=0004h
  1877. SeeAlso: AX=0007h/BX=000Ah
  1878.  
  1879. Format of VINES port record block:
  1880. Offset    Size    Description    (Table 2069)
  1881.  00h    WORD    (call) number of 17-byte elements (01h-05h) to be filled
  1882.  02h    BYTE    (call) port type for first port
  1883.  03h 16 BYTEs    (ret) port (see #1971)
  1884.  13h    BYTE    (call) port type for second port
  1885.  14h 16 BYTEs    (ret) port (see #1971)
  1886.  24h    BYTE    (call) port type for third port
  1887.  25h 16 BYTEs    (ret) port (see #1971)
  1888.  35h    BYTE    (call) port type for fourth port
  1889.  36h 16 BYTEs    (ret) port (see #1971)
  1890.  46h    BYTE    (call) port type for fifth port
  1891.  47h 16 BYTEs    (ret) port (see #1971)
  1892.  57h    BYTE    reserved
  1893. SeeAlso: #2071
  1894. --------N-610007BX0003-----------------------
  1895. INT 61 - Banyan VINES - FIND A SERVICE
  1896.     AX = 0007h
  1897.     BX = 0003h
  1898.     DS:DX -> port control block (see #2070)
  1899. Return: AX = status (see AX=0007h)
  1900. SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0004h,AX=0007h/BX=0005h
  1901.  
  1902. Format of port control block:
  1903. Offset    Size    Description    (Table 2070)
  1904.  00h    WORD    ???
  1905.  02h    WORD    ???
  1906.  04h 16    BYTEs    IPC port (see #1971 at AX=0001h"Sosock")
  1907.  14h  5    WORDs    ???
  1908. SeeAlso: #2076
  1909. --------N-610007BX0004-----------------------
  1910. INT 61 - Banyan VINES - SET PORTS FOR A SERVICE
  1911.     AX = 0007h
  1912.     BX = 0004h
  1913.     DS:DX -> StreetTalk name of service (max 64 bytes)
  1914.     DS:DI -> port record block (see #2071)
  1915. Return: AX = status (see #2068)
  1916. SeeAlso: AX=0007h/BX=0002h,AX=0007h/BX=0003h,AX=0007h/BX=000Ah
  1917.  
  1918. Format of VINES port record block:
  1919. Offset    Size    Description    (Table 2071)
  1920.  00h    WORD    number of 17-byte elements
  1921.  02h    BYTE    port type for first port
  1922.  03h 16 BYTEs    first IPC port (see #1971)
  1923.  13h    BYTE    port type for second port
  1924.  14h 16 BYTEs    second IPC port (see #1971)
  1925.  24h    BYTE    port type for third port
  1926.  25h 16 BYTEs    third IPC port (see #1971)
  1927.  35h    BYTE    port type for fourth port
  1928.  36h 16 BYTEs    fourth IPC port (see #1971)
  1929.  46h    BYTE    port type for fifth port
  1930.  47h 16 BYTEs    fifth IPC port (see #1971)
  1931.  57h    BYTE    reserved
  1932. SeeAlso: #2069
  1933. --------N-610007BX0005-----------------------
  1934. INT 61 - Banyan VINES - GET USER NAME
  1935.     AX = 0007h
  1936.     BX = 0005h
  1937.     DS:DX -> 64-byte buffer for user's StreetTalk name
  1938. Return: AX = status (see also #2068)
  1939.         0000h successful
  1940.         0001h network software not installed or incompatible
  1941. Note:    if no user logged in, first byte of returned name will be 00h
  1942. SeeAlso: AX=0007h/BX=0007h
  1943. --------N-610007BX0006-----------------------
  1944. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING
  1945.     AX = 0007h
  1946.     BX = 0006h
  1947.     SI = error code (>100)
  1948.     DS:DX -> 80-byte buffer for error text
  1949. Return: AX = status (see also #2068)
  1950.         0000h successful
  1951.         0001h network software not installed or incompatible
  1952. --------N-610007BX0007-----------------------
  1953. INT 61 - Banyan VINES - VERIFY EXISTENCE OF NAME AND RETURN CANONICAL FORM
  1954.     AX = 0007h
  1955.     BX = 0007h
  1956.     DS:DX -> NiceName block (see #2072)
  1957. Return: AX = status (see #2068)
  1958. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0008h
  1959.  
  1960. Format of VINES NiceName block:
  1961. Offset    Size    Description    (Table 2072)
  1962.  00h    WORD    type of name
  1963.         0064h (100) organization
  1964.         00C8h (200) group
  1965.         012Ch (300) item
  1966.  02h    WORD    pointer to ASCIZ input name
  1967.  04h    WORD    pointer to 64-byte buffer for output name
  1968. SeeAlso: #2073
  1969. --------N-610007BX0008-----------------------
  1970. INT 61 - Banyan VINES - ENUMERATE StreetTalk NAMES
  1971.     AX = 0007h
  1972.     BX = 0008h
  1973.     DS:DX -> enumerate block (see #2073)
  1974. Return: AX = status (see also #2068)
  1975.         0000h successful
  1976.         0411h all matching names have been returned
  1977.         0412h some groups unavailable, all available matches returned
  1978. Note:    each program using this call should continue until a nonzero status
  1979.       is returned; otherwise, some resources will not be freed for several
  1980.       hours
  1981. SeeAlso: AX=0007h/BX=0005h,AX=0007h/BX=0007h,AX=0007h/BX=0009h
  1982.  
  1983. Format of VINES enumerate block:
  1984. Offset    Size    Description    (Table 2073)
  1985.  00h    WORD    return code
  1986.  02h    WORD    pointer to pattern string
  1987.  04h    WORD    enumerate type
  1988.         0064h (100) organization
  1989.         00C8h (200) group
  1990.         012Ch (300) item
  1991.  06h    WORD    enumerate class
  1992.         0000h unspecified (return all matching items)
  1993.         0001h user names
  1994.         0002h service names
  1995.         0003h list names
  1996.         0004h nicknames
  1997.  08h    WORD    pointer to category criteria block (see #2074) or 0
  1998.  0Ah    WORD    pointer to array of 64-byte returned names
  1999.  0Ch    WORD    number of names returned
  2000.  0Eh  6 BYTEs    reserved for subsequent enumerated calls (set to zeros on first
  2001.           call)
  2002. SeeAlso: #2072
  2003.  
  2004. Format of category criteria block:
  2005. Offset    Size    Description    (Table 2074)
  2006.  00h    WORD    exclude flag
  2007.         0000h return only items with the specified categories
  2008.         0001h return all items except those with the given categories
  2009.  02h    WORD    number of categories (max 5, 0000h = match all categories)
  2010.  04h    WORD    category 1 value (see #2075)
  2011.  06h    WORD    category 2 value
  2012.  08h    WORD    category 3 value
  2013.  0Ah    WORD    category 4 value
  2014.  0Ch    WORD    category 5 value
  2015. SeeAlso: #2073
  2016.  
  2017. (Table 2075)
  2018. Values for common VINES service categories:
  2019.  0001h    server service
  2020.  0002h    file service
  2021.  0003h    print service
  2022.  0004h    mail service
  2023.  0005h    StreetTalk
  2024.  0006h    time service
  2025.  0007h    FTP service
  2026.  0008h    semaphore service
  2027.  0009h    3270/SNA service
  2028.  000Ah    terminal emulation service
  2029.  000Bh    asynchronous terminal service
  2030.  000Ch    NETBIOS service
  2031.  000Dh    PC-based service
  2032.  000Eh    BSC service
  2033.  000Fh    APPC service
  2034.  0010h    NM service
  2035.  0011h    VS service
  2036.  0012h    POP service
  2037.  0013h    AFP service
  2038.  0014h    VCS service
  2039.  0015h    EMS service
  2040.  0016h    LN service
  2041.  0017h    BS service
  2042.  0023h    RIPL service
  2043.  0064h    ADM service
  2044. SeeAlso: #2074
  2045. --------N-610007BX0009-----------------------
  2046. INT 61 - Banyan VINES - TRANSLATE ERROR INTO ASCII STRING (SELECTED PORT)
  2047.     AX = 0007h
  2048.     BX = 0009h
  2049.     SI = error code
  2050.     DS:DX -> 80-byte buffer for error text
  2051.     DS:DI -> IPC port (16 bytes; see AX=0001h#"Sosock" for port format)
  2052. Return: AX = status (see AX=0007h)
  2053. Note:    Same as AX=0007h/BX=0006h, except IPC port is specified explicitly
  2054. SeeAlso: AX=0007h/BX=0006h
  2055. --------N-610007BX000A-----------------------
  2056. INT 61 - Banyan VINES - internal, OS/2 only - GET MANY PORTS FOR SERVICE
  2057.     AX = 0007h
  2058.     BX = 000Ah
  2059.     DS:DX -> port control block (see #2076)
  2060. Return: AX = status (see AX=0007h)
  2061. Note:    This function cannot be called from applications, as the DS register
  2062.       is checked against the redirector data segment address (status code
  2063.       0001h will be returned if DS doesn't match)
  2064. SeeAlso: AX=0007h/BX=0001h,AX=0007h/BX=0002h,AX=0007h/BX=0004h
  2065.  
  2066. Format of port control block:
  2067. Offset    Size    Description    (Table 2076)
  2068.  00h    WORD    ???
  2069.  02h    WORD    ???
  2070.  04h 16    BYTEs    IPC port (see #1971 at AX=0001h"Sosock")
  2071.  14h 14 WORDs    ???
  2072. SeeAlso: #2070
  2073. --------V-610008-----------------------------
  2074. INT 61 - OPTIMA 1024 VGA-Sync,ET-3000 chipset - SET ZOOM OFFSET
  2075.     AX = 0008h
  2076.     BX = X start of zoom offset
  2077.     CX = Y start of zoom offset
  2078. Desc:    specifies the first byte of video memory to appear in the zoom window
  2079. Range:    unknown
  2080. Notes:    INT 61 is the default interrupt; the actual interrupt number can be
  2081.       obtained by calling INT 16/AH=FFh
  2082.     not all vendors include the Tseng TSR which supports these functions
  2083. SeeAlso: AX=0000h"OPTIMA",AX=0006h"OPTIMA",INT 16/AH=FFh"OPTIMA"
  2084. --------N-610008BX0000-----------------------
  2085. INT 61 - Banyan VINES - TALKPORT SERVICE - GET HANDLER ADDRESS
  2086.     AX = 0008h
  2087.     BX = 0000h
  2088. Return: AX = status
  2089.         0000h successful
  2090.     ES:DX = far pointer to handler
  2091. Desc:    The TalkPort is a facility to display event messages (e.g. mail
  2092.       received, printing on a local printer, ...) on the screen
  2093. Note:    This service is handled by the redirector
  2094. SeeAlso: AX=0008h/BX=0001h,AX=0008h/BX=0002h
  2095. --------N-610008BX0001-----------------------
  2096. INT 61 - Banyan VINES - TALKPORT SERVICE - SET HANDLER ADDRESS
  2097.     AX = 0008h
  2098.     BX = 0001h
  2099.     ES:DX -> new handler
  2100. Return: AX = status
  2101.         0000h successful
  2102. SeeAlso: AX=0008h/BX=0000h
  2103. --------N-610008BX0002-----------------------
  2104. INT 61 - Banyan VINES - TALKPORT SERVICE - POST MESSAGE ON LOCAL DISPLAY
  2105.     AX = 0008h
  2106.     BX = 0002h
  2107.     CX = message display flags (see #2077)
  2108.     DS:DX -> ASCIZ string to display (only first 80 chars used)
  2109. Return: AX = status
  2110.         0000h successful
  2111.         000Bh message display function currently busy
  2112.         000Ch message queue full
  2113. Notes:    queues up to three messages to be displayed on the bottom line
  2114.     This service is handled by the redirector
  2115.     In a DOS session, TalkPort messages are displayed on display line 25;
  2116.       in a Windows session, TalkPort messages are displayed in dialog boxes
  2117. SeeAlso: AX=0008h/BX=0000h,AX=0008h/BX=0003h
  2118.  
  2119. Bitfields for VINES message display flags:
  2120. Bit(s)    Description    (Table 2077)
  2121.  0    message will remain on screen until user presses ^X
  2122.  1    ring bell after displaying message
  2123.  2    blink
  2124. --------N-610008BX0003-----------------------
  2125. INT 61 - Banyan VINES - TALKPORT SERVICE - INTERCEPT VINES 25th-LINE MESSAGES
  2126.     AX = 0008h
  2127.     BX = 0003h
  2128.     DS:DX -> request block (see #2078)
  2129. Return: AX = status
  2130.         0000h successful
  2131.         0001h network software not installed or incompatible
  2132. Notes:    message handler should not call BIOS or DOS functions, and should
  2133.       either call next handler or simply return
  2134.     to stop intercepting messages, set prev and next request blocks to
  2135.       point at each other
  2136. SeeAlso: AX=0008h/BX=0002h
  2137.  
  2138. Format of VINES request block for 25-th line messages:
  2139. Offset    Size    Description    (Table 2078)
  2140.  00h    DWORD    pointer to user-written message handler
  2141.  04h    DWORD    pointer to next request block (filled in by VINES)
  2142.  08h    DWORD    pointer to previous request block (filled in by VINES)
  2143.  0Ch    DWORD    pointer to message storage area (filled by VINES) (see #2079)
  2144.  
  2145. Format of message storage area:
  2146. Offset    Size    Description    (Table 2079)
  2147.  00h 16 BYTEs    IPC port of message sender (see #1971)
  2148.  10h    BYTE    message flags
  2149.  11h    WORD    reserved
  2150.  13h    BYTE    length of message
  2151.  14h 80 BYTEs    message text
  2152. SeeAlso: #2078
  2153. --------N-610009-----------------------------
  2154. INT 61 - Banyan VINES - NETBIOS CLIENT SERVICE
  2155.     AX = 0009h
  2156.     other parameters, if any, unknown
  2157. --------N-61000A-----------------------------
  2158. INT 61 - Banyan VINES - SECONDARY 3270 INTERFACE
  2159.     AX = 000Ah
  2160. Note:    either 3270/SNA or 3270/BSC interface will use AX=000Ah, depending on
  2161.       which is loaded second.  The first interface loaded will use AX=0002h
  2162. SeeAlso: INT 61/AX=0002h
  2163. --------N-61000B-----------------------------
  2164. INT 61 - Banyan VINES - SEMAPHORE SERVICE
  2165.     AX = 000Bh
  2166.     other parameters, if any, unknown
  2167. --------N-61000C-----------------------------
  2168. INT 61 - Banyan VINES - 3270 KEYBOARD HANDLER
  2169.     AX = 000Ch
  2170.     other parameters, if any, unknown
  2171. --------N-61000D-----------------------------
  2172. INT 61 - Banyan VINES - T3270 SERVICE FUNCTION
  2173.     AX = 000Dh
  2174.     other parameters, if any, unknown
  2175. --------N-61000E-----------------------------
  2176. INT 61 - Banyan VINES - ENHANCED 3270 SERVICE
  2177.     AX = 000Eh
  2178.     other parameters, if any, unknown
  2179. --------N-61000F-----------------------------
  2180. INT 61 - Banyan VINES - COMM WINDOWS ENTRY POINT
  2181.     AX = 000Fh
  2182.     other parameters, if any, unknown
  2183. Note:    This service ist handled by the adapter driver
  2184. --------N-610010-----------------------------
  2185. INT 61 - Banyan VINES - INTERFACE TO NBNS
  2186.     AX = 0010h
  2187.     other parameters, if any, unknown
  2188. --------N-6101-------------------------------
  2189. INT 61 - Banyan VINES - CHECK SERVICE
  2190.     AH = 01h
  2191.     AL = service ID (see #2080)
  2192. Return: AX = status
  2193.         0000h installed
  2194.         0001h not installed
  2195.         0002h invalid ID
  2196.         0003h invalid function
  2197. Note:    Only the offset part of the service pointer is checked for a nonzero
  2198.       value
  2199. SeeAlso: AH=00h,AH=02h"VINES",AH=03h"VINES"
  2200.  
  2201. (Table 2080)
  2202. Values for VINES service ID:
  2203.  01h    communications
  2204.  02h    primary 3270 emulation
  2205.  03h    async terminal emulation
  2206.  04h    file deflection
  2207.  07h    StreetTalk
  2208.  08h    environment
  2209.  0Ah    secondary 3270 emulation
  2210.  0Bh    semaphore service
  2211.  0Ch    3270 emulation active status
  2212.  0Dh    T3270 keyboard interrupt simulator
  2213.  0Eh    enhanced 3270 service
  2214.  0Fh    comm Windows entry point
  2215.  10h    interface to NBNS
  2216. --------N-6101--BX0000-----------------------
  2217. INT 61 u - PC/TCP kernel v2.1+ - "net_config" - CONFIGURE RUNNING KERNEL
  2218.     AH = 01h
  2219.     BX = 0000h
  2220.     DH = tag number
  2221.     DL = device number
  2222.     DS:SI -> buffer to send to kernel
  2223.     ES:DI -> integer containing size of buffer
  2224. Return: CF clear if successful
  2225.     CF set on error
  2226.         AX = error code (see #1962 at INT 61"PC/TCP")
  2227. Range:    INT 20 to INT E0, selected by configuration
  2228. Notes:    there are a large number of tags available; the items returned
  2229.       all refer to local kernel configuration, and are not needed in
  2230.       normal use.
  2231.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2232. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=02"PC/TCP"
  2233. --------N-6102-------------------------------
  2234. INT 61 - Banyan VINES - GET REVISION NUMBER
  2235.     AH = 02h
  2236.     DS:DX -> 2-byte buffer for result
  2237. Return: AX = 0000h installed
  2238.         DS:DX buffer contains revision number as
  2239.         10000d * major_ver + 100d * minor_ver + patch_revision
  2240. SeeAlso: AH=01h"VINES",AH=04h"VINES",AH=07h"VINES"
  2241. --------N-6102--BX0000-----------------------
  2242. INT 61 u - PC/TCP kernel v2.1+ - "get_kernel_info" - GET MISCELLAN LOCAL INFO
  2243.     AH = 02h
  2244.     BX = 0000h
  2245.     DH = tag number
  2246.     DL = device number
  2247.     DS:SI -> buffer for result (up to 48 bytes for version <= 2.2)
  2248.     ES:DI -> integer containing size of buffer
  2249. Return: CF clear if successful
  2250.         Data loaded into specified buffer, and size value altered
  2251.     CF set on error
  2252.         AX = error code (see #1962 at INT 61"PC/TCP")
  2253. Range:    INT 20 to INT E0, selected by configuration
  2254. Notes:    there are a large number of tags available; the items returned
  2255.       all refer to local kernel configuration, and are not needed in
  2256.       normal use.
  2257.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2258. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  2259. --------N-6103-------------------------------
  2260. INT 61 - Banyan VINES - INSTALL SERVICE HANDLER
  2261.     AH = 03h
  2262.     AL = service ID (see #2080)
  2263.     DS:DX -> new service handler
  2264. Return: AX = 0000h successful
  2265. SeeAlso: AH=00h,AH=01h"VINES",AH=02h"VINES",AH=05h"VINES"
  2266. --------N-6104-------------------------------
  2267. INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE
  2268.     AH = 04h
  2269.     DS:DX -> 2-byte buffer containing the VINES revision number
  2270.         DS:DX buffer contains revision number as
  2271.         10000d * major_ver + 100d * minor_ver + patch_revision
  2272. Return: AX = status
  2273.         0000h valid version
  2274.         0004h out of range
  2275. Note:    For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
  2276. SeeAlso: AH=02h"VINES",AH=07h"VINES",AH=08h"VINES"
  2277. --------N-6105-------------------------------
  2278. INT 61 - PC/TCP kernel v2.05+ - "get_addr" - GET INTERNET ADDRESS OF NET DESCR
  2279.     AH = 05h
  2280.     BX = network descriptor
  2281. Return: CF clear if successful
  2282.         DX:AX = Internet address of ND
  2283.     CF set on error
  2284.         AX = error code (see #1962 at INT 61"PC/TCP")
  2285. Range:    INT 20 to INT E0, selected by configuration
  2286. Notes:    the installation check consists of testing for the signature "TCPTSR"
  2287.       three bytes beyond the start of the interrupt handler
  2288. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=16h"PC/TCP"
  2289. SeeAlso: INT 63/AH=25h"BW-TCP"
  2290. --------N-6105-------------------------------
  2291. INT 61 - Banyan VINES - READ PCCONFIG BYTES
  2292.     AH = 05h
  2293.     CX = number of bytes to copy
  2294.         (max. 0175h for VINES 4.00, max. 017Fh for VINES 4.10+)
  2295.     SI = offset of area to be copied (see #2081,#2082)
  2296. Return: AX = status
  2297.         0000h successful
  2298.         0004h out of range
  2299. Notes:    The PCCONFIG area is located in the code segment of the BANV handler
  2300.     To find out which PCCONFIG structure applies, call this function first
  2301.       with CX=0006h to get the VINES revision number
  2302. SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=06h"VINES",AH=0Bh"VINES"
  2303.  
  2304. Format of PCCONFIG area (VINES 4.00):
  2305. Offset    Size    Description    (Table 2081)
  2306.  00h  6    BYTEs    VINES revision (ASCII, zero-padded)
  2307.  06h  2    BYTEs    NEWREV-number (ASCII, two digits)
  2308.  08h    WORD    hardware interrupt level
  2309.  0Ah    WORD    DMA channel
  2310.  0Ch    WORD    I/O address
  2311.  0Eh    DWORD    adapter ROM address (linear)
  2312.  12h    DWORD    adapter RAM address (linear)
  2313.  16h    WORD    BANV interrupt
  2314.  18h 32    BYTEs    default login group #1
  2315.  38h 32    BYTEs    default login group #2
  2316.  58h 32    BYTEs    default login group #3
  2317.  78h    WORD    semaphore locking support flag
  2318.  7Ah    WORD    extended StreetTalk flag
  2319.  7Ch    WORD    maximum number of file volumes
  2320.  7Eh    WORD    NetBIOS flag
  2321.  80h 60    BYTEs    default network adapter
  2322.  BCh 60    BYTEs    default communications driver
  2323.  F8h    WORD    maximum number of SPP connections
  2324.  FAh    WORD    maximum number of open sockets
  2325.  FCh    WORD    communications buffer size (10..60 KB)
  2326.  FEh 20    BYTEs    location directory on drive Z:
  2327. 112h 33    BYTEs    auxiliary configuration area #1 (see #2083)
  2328. 133h 33    BYTEs    auxiliary configuration area #2
  2329. 154h 33    BYTEs    auxiliary configuration area #3
  2330. SeeAlso: #2082
  2331.  
  2332. Format of PCCONFIG area (VINES 4.10+):
  2333. Offset    Size    Description    (Table 2082)
  2334.  00h  6    BYTEs    VINES revision (ASCII, zero-padded)
  2335.  06h  2    BYTEs    NEWREV-number (ASCII, two digits)
  2336.  08h    WORD    hardware interrupt level
  2337.  0Ah    WORD    DMA channel
  2338.  0Ch    WORD    I/O address
  2339.  0Eh    DWORD    adapter ROM address (linear)
  2340.  12h    DWORD    adapter RAM address (linear)
  2341.  16h    WORD    BANV interrupt
  2342.  18h 32    BYTEs    default login group #1
  2343.  38h 32    BYTEs    default login group #2
  2344.  58h 32    BYTEs    default login group #3
  2345.  78h    WORD    semaphore locking support flag
  2346.  7Ah    WORD    extended StreetTalk flag
  2347.  7Ch    WORD    named pipes support flag
  2348.  7Eh    WORD    maximum number of file volumes
  2349.  80h    WORD    NetBIOS flag
  2350.  82h 60    BYTEs    default network adapter
  2351.  BEh 60    BYTEs    default communications driver
  2352.  FAh    WORD    maximum number of SPP connections
  2353.  FCh    WORD    maximum number of open sockets
  2354.  FEh    WORD    communications buffer size (10..60 KB)
  2355. 100h    WORD    number of mailslots
  2356. 102h    WORD    maximum number of open files
  2357. 104h    WORD    maximum number of NetBIOS sessions
  2358. 106h    WORD    maximum number of NetBIOS commands
  2359. 108h 20    BYTEs    location directory on drive Z:
  2360. 11Ch 33    BYTEs    auxiliary configuration area #1 (see #2083)
  2361. 13Dh 33    BYTEs    auxiliary configuration area #2
  2362. 15Eh 33    BYTEs    auxiliary configuration area #3
  2363.  
  2364. Format of auxiliary configuration area:
  2365. Offset    Size    Description    (Table 2083)
  2366.  00h 16    BYTEs    item name (no zero terminator if length = 16)
  2367.  10h    BYTE    item value type (1=text, else numeric)
  2368.  11h 16    BYTEs    item value (string if type 1, else DWORD)
  2369. SeeAlso: #2081,#2082
  2370. --------N-6106-------------------------------
  2371. INT 61 - PC/TCP kernel v2.05 - "net_info" - GET INTERFACE STATISTICS
  2372.     AH = 06h
  2373.     BX = network descriptor (must be allocated and open)
  2374.     DS:SI -> 38-byte buffer for interface statistics (see #2084)
  2375. Return: CF clear if successful
  2376.         buffer filled
  2377.     CF set on error
  2378.         AX = error code (see #1962)
  2379. Desc:    returns the statistics relevant to the particular network interface
  2380.        used by the specified network descriptor
  2381. Range:    INT 20 to INT E0, selected by configuration
  2382. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=05h"PC/TCP"
  2383.  
  2384. Format of PC/TCP interface statistics:
  2385. Offset    Size    Description    (Table 2084)
  2386.  00h    WORD    interface class (e.g. 802.3)
  2387.  02h    WORD    type (manufacturer) of interface
  2388.  04h    WORD    interface number
  2389.  06h    DWORD    (big-endian) IP address of interface
  2390.  0Ah    DWORD    subnet mask
  2391.  0Eh    WORD    0001h if interface is up
  2392.  10h    DWORD    total packets received
  2393.  14h    DWORD    total packets sent
  2394.  18h    DWORD    receive errors
  2395.  1Ch    DWORD    send errors
  2396.  20h    WORD    length of local net address (e.g. 0006h for Ethernet)
  2397.  22h    DWORD    pointer to local net address
  2398. --------N-6106-------------------------------
  2399. INT 61 - Banyan VINES - GET PCCONFIG BASE ADDRESS
  2400.     AH = 06h
  2401.     DS:DX -> 4-byte buffer for far pointer to PCCONFIG area
  2402. Return: AX = 0000h successful
  2403. Note:    The PCCONFIG area is located in the code segment of the BANV handler
  2404. SeeAlso: AH=05h"VINES",AH=0Bh"VINES"
  2405. --------N-6107-------------------------------
  2406. INT 61 - PC/TCP kernel v2.05+ - "net_globalize" - MAKE NET DESCRIPTOR GLOBAL
  2407.     AH = 07h
  2408.     BX = local network descriptor
  2409. Return: CF clear if successful
  2410.         AX = global network descriptor
  2411.     CF set on error
  2412.         AX = error code (see #1962)
  2413. Notes:    the new network descriptor can be accessed from all processes and is
  2414.       independent of DOS
  2415.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2416. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  2417. SeeAlso: INT 61/AH=29h
  2418. --------N-6107-------------------------------
  2419. INT 61 - Banyan VINES - GET VINES REVISION NUMBER (LONG)
  2420.     AH = 07h
  2421.     DS:DX -> 4-byte buffer for result
  2422. Return: AX = 0000h successful
  2423.         DS:DX buffer contains revision number as
  2424.         10000d * major_ver + 100d * minor_ver + patch_revision
  2425. SeeAlso: AH=02h"VINES",AH=04h"VINES",AH=08h"VINES"
  2426. --------N-6108-------------------------------
  2427. INT 61 - PC/TCP kernel v2.05+ - "net_release" - CLOSE A NETWORK DESCRIPTOR
  2428.     AH = 08h
  2429.     BX = network descriptor
  2430. Return: CF clear if successful
  2431.         AX = 0000h (BWPCTCP shim)
  2432.     CF set on error
  2433.         AX = error code (see #1962)
  2434. Range:    INT 20 to INT E0, selected by configuration
  2435. Note:    the descriptor will be closed and resources released.  If a stream
  2436.       descriptor, the protocol (FIN etc) is completed unless the
  2437.       non-blocking option has been set.
  2438. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=09h"PC/TCP"
  2439. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  2440. --------N-6108-------------------------------
  2441. INT 61 - Banyan VINES - CHECK VINES REVISION NUMBER IN RANGE (LONG)
  2442.     AH = 08h
  2443.     DS:DX -> 4-byte buffer containing the VINES revision number
  2444.         DS:DX buffer contains revision number as
  2445.         10000d * major_ver + 100d * minor_ver + patch_revision
  2446. Return: AX = status
  2447.         0000h valid version
  2448.         0004h out of range
  2449. Note:    For Revision 5.53, the valid range is 4.10(0) to 6.19(99)
  2450. SeeAlso: AH=04h"VINES",AH=07h"VINES"
  2451. --------N-6109-------------------------------
  2452. INT 61 - PC/TCP kernel v2.05+ - "net_releaseall" - CLOSE ALL NON-GLOBAL DESCRS
  2453.     AH = 09h
  2454. Return: CF clear
  2455. Range:    INT 20 to INT E0, selected by configuration
  2456. Notes:    this call performs function 08h on every non-global network descriptor.
  2457.       Global descriptors must be released individually.
  2458. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  2459. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  2460. --------N-6109-------------------------------
  2461. INT 61 - Banyan VINES - GET VALUE OF AN OS/2 BACKEND VARIABLE
  2462.     AH = 09h
  2463.     other parameters, if any, unknown
  2464. SeeAlso: AH=0Ah"VINES"
  2465. --------N-610A-------------------------------
  2466. INT 61 - PC/TCP kernel v2.05 - "net_send" - ???
  2467.     AH = 0Ah
  2468.     ???
  2469. Return: ???
  2470. Notes:    this function is described as "unused" in the v2.05 and v2.2
  2471.       documentation
  2472.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2473. SeeAlso: AH=0Bh
  2474. --------N-610A-------------------------------
  2475. INT 61 - Banyan VINES - SET VALUE OF AN OS/2 BACKEND VARIABLE
  2476.     AH = 0Ah
  2477.     other parameters, if any, unknown
  2478. SeeAlso: AH=09h"VINES"
  2479. --------N-610B-------------------------------
  2480. INT 61 - PC/TCP kernel v2.05 - "net_sendto" - ???
  2481.     AH = 0Bh
  2482.     ???
  2483. Return: ???
  2484. Range:    INT 20 to INT E0, selected by configuration
  2485. Notes:    this function is described as "unused" in the v2.05 and v2.2
  2486.       documentation
  2487.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2488. SeeAlso: AH=0Ah
  2489. --------N-610B-------------------------------
  2490. INT 61 - Banyan VINES - SET PCCONFIG IN BACKEND
  2491.     AH = 0Bh
  2492.     other parameters, if any, unknown
  2493. SeeAlso: AH=05h"VINES",AH=06h"VINES"
  2494. --------N-610C-------------------------------
  2495. INT 61 u - PC/TCP kernel v2.05+ - "net_stat" - GET CONNECTION STATISTICS
  2496.     AH = 0Ch
  2497.     BX = network descriptor or one of the following:
  2498.         FFFCh for kernel ICMP statistics (see #2088)
  2499.         FFFDh for kernel UDP statistics (see #2087)
  2500.         FFFEh for kernel IP statistics (see #2086)
  2501.         FFFFh for kernel TCP statistics (see #2085)
  2502.     DS:DX -> 64-byte buffer
  2503. Return: CF clear if successful
  2504.         buffer filled
  2505.     CF set on error
  2506.         AX = error code (see #1962)
  2507. Notes:    the fields filled in for a network descriptor depend on the protocol
  2508.       family used by that descriptor's connection
  2509.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2510. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2511.  
  2512. Format of PC/TCP kernel TCP statistics:
  2513. Offset    Size    Description    (Table 2085)
  2514.  00h 16 BYTEs    unused
  2515.  10h    DWORD    bytes sent
  2516.  14h    DWORD    bytes received
  2517.  18h  8 BYTEs    unused
  2518.  20h    DWORD    packets sent
  2519.  24h    DWORD    packets received
  2520.  28h    DWORD    bad checksums
  2521.  2Ch    DWORD    count of window ignored by remote
  2522.  30h    DWORD    timeouts
  2523.  34h    DWORD    resets
  2524.  38h    DWORD    duplicate packets
  2525.  3Ch    DWORD    retransmits
  2526. SeeAlso: #2086,#2087,#2088
  2527.  
  2528. Format of PC/TCP kernel IP statistics:
  2529. Offset    Size    Description    (Table 2086)
  2530.  00h  8 BYTEs    unused
  2531.  08h    DWORD    invalid IP header length errors
  2532.  0Ch    DWORD    protocol errors (unwanted packets)
  2533.  10h    DWORD    duplicate fragments received
  2534.  14h    DWORD    bad fragments received
  2535.  18h    DWORD    security errors
  2536.  1Ch    DWORD    count of bad IP addresses received
  2537.  20h    DWORD    packets sent
  2538.  24h    DWORD    packets received
  2539.  28h    DWORD    bad checksums received
  2540.  2Ch    DWORD    total IP protocol errors
  2541.  30h    DWORD    fragmentation errors
  2542.  34h    DWORD    IP packets discarded + bad security + bad fragments
  2543.  38h    DWORD    fragments received
  2544.  3Ch  4 BYTEs    unused
  2545. SeeAlso: #2085,#2087,#2088
  2546.  
  2547. Format of PC/TCP kernel UDP statistics:
  2548. Offset    Size    Description    (Table 2087)
  2549.  00h 28 BYTEs    unused
  2550.  1Ch    DWORD    packets dropped for lack of buffers
  2551.  20h    DWORD    packets sent
  2552.  24h    DWORD    packets received
  2553.  28h    DWORD    bad checksums
  2554.  2Ch    DWORD    port not listening errors
  2555.  30h  4 BYTEs    unused
  2556.  34h    DWORD    truncated receives
  2557.  38h  8 BYTEs    unused
  2558. SeeAlso: #2085,#2086,#2088
  2559.  
  2560. Format of PC/TCP kernel ICMP statistics:
  2561. Offset    Size    Description    (Table 2088)
  2562.  00h    DWORD    "TimeEx" sent
  2563.  04h    DWORD    "TimeEx" received
  2564.  08h    DWORD    "ParamProb" sent
  2565.  0Ch    DWORD    "ParamProb" received
  2566.  10h    DWORD    redirects received
  2567.  14h    DWORD    source quenches received
  2568.  18h    DWORD    ICMP Echo Requests ("ping") sent
  2569.  1Ch    DWORD    ICMP Echo Requests received
  2570.  20h    DWORD    packets sent
  2571.  24h    DWORD    packets received
  2572.  28h    DWORD    bad packets received
  2573.  2Ch    DWORD    "DestUn" received
  2574.  30h    DWORD    packet send errors
  2575.  34h    DWORD    "DestUn" sent
  2576.  38h    DWORD    ICMP Echo replies received
  2577.  3Ch    DWORD    ICMP Echo replies sent
  2578. SeeAlso: #2085,#2086,#2087
  2579. --------N-610D-------------------------------
  2580. INT 61 - PC/TCP kernel v2.05+ - "is_netnd" - CHECK IF NETWORK DESCRIPTOR VALID
  2581.     AH = 0Dh
  2582.     BX = possible network descriptor
  2583. Return: CF clear if valid
  2584.     CF set on error
  2585.         AX = error code (see #1962 at INT 61"PC/TCP")
  2586. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=08h"PC/TCP"
  2587. SeeAlso: INT 61/AH=22h
  2588. --------N-610E-------------------------------
  2589. INT 61 - PC/TCP kernel v2.05+ - "net_select" - DETECT READINESS OF NETWORK
  2590.     AH = 0Eh
  2591.     BX = maximum value of network descriptor for which to return info
  2592.     DS:DX -> 32-bit (max) array of bit flags for read readiness
  2593.     ES:DI -> 32-bit (max) array of bit flags for write readiness
  2594. Return: CF clear
  2595. Range:    INT 20 to INT E0, selected by configuration
  2596. Notes:    bits in the DS:DX buffer are set if the corresponding network
  2597.       descriptor may be read without blocking; bits in the ES:DI buffer
  2598.       are set if the corresponding network descriptor may be written
  2599.       without blocking.  This implies that the network descriptor has
  2600.       opened correctly and the protocol initialized.
  2601.     the installation check consists of testing for the signature "TCPTSR"
  2602.       three bytes beyond the start of the interrupt handler
  2603. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2604. --------N-610F-------------------------------
  2605. INT 61 - PC/TCP kernel v2.05+ - "get_netversion" - GET SOFTWARE VERSION
  2606.     AH = 0Fh
  2607. Return: CF clear
  2608.     AX = version (AH = major, AL = minor)
  2609.     BX = patch level
  2610. Notes:    patch levels are no longer used starting with version 2.10; instead,
  2611.       the minor version level is incremented.
  2612.     Beame&Whiteside's BWPCTCP v3.0a shim reports version 2.05, but does not
  2613.       set BX
  2614. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2615. --------N-6110-------------------------------
  2616. INT 61 - PC/TCP kernel v2.05+ - "net_shutdown" - UNINSTALL
  2617.     AH = 10h
  2618. Return: CF clear if successful
  2619.     CF set on error
  2620.         AX = error code (see #1962 at INT 61"PC/TCP")
  2621. Range:    INT 20 to INT E0, selected by configuration
  2622. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2623. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2624. --------N-6111-------------------------------
  2625. INT 61 - PC/TCP kernel v2.05+ - "disable_async" - DISABLE ASYNCHRONOUS HANDLERS
  2626.     AH = 11h
  2627. Return: CF clear
  2628.     AX = previous state
  2629.         0000h async calls were already disabled
  2630.         else  async calls were enabled
  2631. SeeAlso: INT 61"PC/TCP",INT 61/AH=12h
  2632. --------N-6112-------------------------------
  2633. INT 61 - PC/TCP kernel v2.05+ - "enable_async" - ENABLE ASYNCHRONOUS HANDLERS
  2634.     AH = 12h
  2635. Return: CF clear
  2636.     AX = previous state
  2637.         0000h async calls were disabled
  2638.         else  async calls were already enabled
  2639. SeeAlso: INT 61"PC/TCP",INT 61/AH=11h
  2640. --------N-6113-------------------------------
  2641. INT 61 - PC/TCP kernel v2.05 - "net_connect" - OPEN A NETWORK CONNECTION
  2642.     AH = 13h
  2643.     BX = network descriptor (FFFFh for automatic net_getdesc)
  2644.     DX = protocol (see #2089)
  2645.     DS:SI -> buffer for "addr" structure (see #2090)
  2646. Return: CF clear if successful
  2647.         AX = network descriptor used or allocated
  2648.     CF set on error
  2649.         AX = error code (see #1962 at INT 61"PC/TCP")
  2650. Notes:    resets the connection with AH=19h in various cases
  2651.     will wait for protocol on stream connections unless non-blocking was
  2652.       set with AH=20h
  2653. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=18h,INT 61/AH=23h
  2654. SeeAlso: INT 63/AH=14h"BW-TCP"
  2655.  
  2656. (Table 2089)
  2657. Values for PC/TCP protocol:
  2658.  0001h    raw net (undocumented)
  2659.  0002h    raw IP
  2660.  0003h    datagram (UDP)
  2661.  0004h    stream (TCP)
  2662.  0005h    raw ICMP
  2663.  
  2664. Format of structure "addr":
  2665. Offset    Size    Description    (Table 2090)
  2666.  00h    DWORD    Internet address (network order)
  2667.  04h    WORD    remote socket number (network order)
  2668.  06h    WORD    local socket number (network order) 0000h means "you choose"
  2669.  08h    BYTE    protocol (see #2089)
  2670. --------N-6114-------------------------------
  2671. INT 61 Ou - PC/TCP kernel v2.05 - "net_recv" - NO LONGER SUPPORTED
  2672.     AH = 14h
  2673.     BX = network descriptor
  2674. Return: CF set
  2675.         AX = 0018h (see #1962 at INT 61"PC/TCP")
  2676. Notes:    displays error message "Illegal system call!  Please upgrade your
  2677.       PCserver software" to standard output
  2678.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2679. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=0Ah,INT 61/AH=15h
  2680. --------N-6115-------------------------------
  2681. INT 61 - PC/TCP kernel v2.05 - "net_recvfrom" - ???
  2682.     AH = 15h
  2683.     ???
  2684. Return: ???
  2685. Notes:    this function is described as "unused" in the v2.2 documentation
  2686.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2687. SeeAlso: INT 61/AH=0Bh,INT 61/AH=14h
  2688. --------N-6116-------------------------------
  2689. INT 61 - PC/TCP kernel v2.05+ - "net_peer" - GET DATA ON REMOTE PEER
  2690.     AH = 16h
  2691.     BX = network descriptor
  2692.     DS:DX -> 9-byte buffer for "addr" structure (see #2090)
  2693. Return: CF clear if successful
  2694.         buffer filled
  2695.     CF set on error
  2696.         AX = error code (see #1962 at INT 61"PC/TCP")
  2697. Range:    INT 20 to INT E0, selected by configuration
  2698. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2699. --------N-6117-------------------------------
  2700. INT 61 - PC/TCP kernel v2.05+ - "net_reconfig" - RE-READ KERNEL CONFIGURATION
  2701.     AH = 17h
  2702. Return: CF clear if successful
  2703.     CF set on error
  2704.         AX = error code (see #1962 at INT 61"PC/TCP")
  2705. Notes:    this routine is deprecated in v2.1+ and will eventually be withdrawn;
  2706.       in v2.1+, this function calls AH=01h which should be used instead
  2707.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2708. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=01h"PC/TCP"
  2709. --------N-6118-------------------------------
  2710. INT 61 - PC/TCP kernel v2.05+ - "net_eof" - CLOSE TRANSMIT SIDE OF CONNECTION
  2711.     AH = 18h
  2712.     BX = network descriptor
  2713. Return: CF clear if successful
  2714.     CF set on error
  2715.         AX = error code (see #1962 at INT 61"PC/TCP")
  2716. Note:    a TCP "FIN" command is sent and no further data may be transmitted,
  2717.       although the connection remains open
  2718. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h"PC/TCP"
  2719. SeeAlso: INT 63/AH=0Eh"BW-TCP"
  2720. --------N-6119-------------------------------
  2721. INT 61 - PC/TCP kernel v2.05+ - "net_abort" - RESET A NETWORK CONNECTION
  2722.     AH = 19h
  2723.     BX = network descriptor
  2724. Return: CF clear if successful
  2725.     CF set on error
  2726.         AX = error code (see #1962 at INT 61"PC/TCP")
  2727. Desc:    immediately destroys the specified connection
  2728. Note:    send a TCP "RST" command if a stream connection is open
  2729. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=24h
  2730. --------N-611A-------------------------------
  2731. INT 61 - PC/TCP kernel v2.05+ - "net_write" - WRITE TO THE NETWORK
  2732.     AH = 1Ah
  2733.     BX = network descriptor
  2734.     CX = number of bytes to transmit (0000h allowed)
  2735.     DX = send options (see #2091)
  2736.     DS:SI -> data to be written
  2737. Return: CF clear if successful
  2738.         AX = number of bytes actually written
  2739.         DX = ???
  2740.     CF set on error
  2741.         AX = error code (see #1962 at INT 61"PC/TCP")
  2742. Range:    INT 20h to INT E0h, selected by configuration
  2743. Notes:    the installation check consists of testing for the signature "TCPTSR"
  2744.       three bytes beyond the start of the interrupt handler
  2745. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  2746. SeeAlso: INT 63/AH=19h"BW-TCP",INT 63/AH=1Bh"BW-TCP"
  2747.  
  2748. Bitfields for PC/TCP send options:
  2749. Bit(s)    Description    (Table 2091)
  2750.  0    signal "URG"ent data
  2751.  3    attempt rerouting on non-stream calls if first attempt fails
  2752.  4    send data with PUSH flag (no override of Nagle) (see option 0Ch)
  2753.  5    fail rather than truncating datagram
  2754.  6    fail rather than blocking
  2755.  7    broadcast packet
  2756. --------N-611B-------------------------------
  2757. INT 61 - PC/TCP kernel v2.05+ - "net_read" - READ FROM THE NETWORK
  2758.     AH = 1Bh
  2759.     BX = network descriptor
  2760.     CX = maximum number of bytes to read
  2761.     DX = receive options (see #2092)
  2762.     DS:SI -> buffer for data
  2763.     ES:DI -> "addr" structure (see #2090) for remote from which to read
  2764.         0000h:0000h for any
  2765. Return: CF clear if successful
  2766.         AX = number of bytes actually read
  2767.         DX = ???
  2768.     CF set on error
  2769.         AX = error code (see #1962 at INT 61"PC/TCP")
  2770. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  2771.  
  2772. Bitfields for PC/TCP receive options:
  2773. Bit(s)    Description    (Table 2092)
  2774.  1    do not remove data from queue, just copy it
  2775.  2    do not copy data, just remove it from queue
  2776.  5    fail if datagram would be truncated
  2777.  6    do not block, return error if no data available
  2778. Note:    special case for UDP: if both 1 and 2 set, return number of datagrams
  2779. --------N-611C-------------------------------
  2780. INT 61 - PC/TCP kernel v2.05+ - "net_writeto" - WRITE A DATAGRAM
  2781.     AH = 1Ch
  2782.     BX = network descriptor
  2783.     CX = number of bytes to transmit (0000h allowed)
  2784.     DX = send options (see #2091)
  2785.     DS:SI -> data to be written
  2786.     ES:DI -> "addr" structure (see #2090)
  2787. Return: CF clear if successful
  2788.         AX = number of bytes actually written
  2789.         DX = ???
  2790.     CF set on error
  2791.         AX = error code (see #1962 at INT 61"PC/TCP")
  2792. Note:    this function differs from AH=1Ah in that the address and socket
  2793.       numbers can be overridden
  2794. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Ah,INT 61/AH=1Dh
  2795. SeeAlso: INT 63/AH=21h"BW-TCP"
  2796. --------N-611D-------------------------------
  2797. INT 61 - PC/TCP kernel v2.05+ - "net_readfrom" - READ A DATAGRAM
  2798.     AH = 1Dh
  2799.     BX = network descriptor
  2800.     CX = maximum number of bytes to read
  2801.     DX = receive options (see #2091)
  2802.     DS:SI -> buffer for received data
  2803.     ES:DI -> 9-byte buffer containing "addr" structure (see #2090)
  2804. Return: CF clear if successful
  2805.         AX = number of bytes read
  2806.         DX = ???
  2807.     CF set on error
  2808.         AX = error code (see #1962 at INT 61"PC/TCP")
  2809. Notes:    this function can read from any host or a designated host depending
  2810.       on settings in the "addr" structure
  2811.     only for use with datagram or Raw descriptors
  2812. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=1Bh,INT 61/AH=1Ch
  2813. --------N-611E-------------------------------
  2814. INT 61 - PC/TCP kernel v2.05+ - "net_flush" - FLUSH PENDING DATA
  2815.     AH = 1Eh
  2816.     BX = network descriptor
  2817. Return: CF clear if successful
  2818.     CF set on error
  2819.         AX = error code (see #1962 at INT 61"PC/TCP")
  2820. Range:    INT 20 to INT E0, selected by configuration
  2821. Notes:    bufferred data is transmitted immediately, overriding Nagle's algorithm
  2822.       if necessary
  2823.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2824. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2825. --------N-611F-------------------------------
  2826. INT 61 - PC/TCP kernel v2.05+ - "net_asynch" - SET UP ASYNCHRONOUS CALL-BACK
  2827.     AH = 1Fh
  2828.     BX = network descriptor
  2829.     CX = event type (see #2093)
  2830.     DS:SI -> event handler routine (see #2094)
  2831.     ES:DI = 32-bit hint passed to handler
  2832. Return: CF clear if successful
  2833.         DS:DX -> previous handler
  2834.     CF set on error
  2835.         AX = error code (see #1962 at INT 61"PC/TCP")
  2836. Note:    ICMP messages do not trigger events on stream connections
  2837. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2838.  
  2839. (Table 2093)
  2840. Values for PC/TCP event type:
  2841.  00h    alarm
  2842.  01h    open (successfully opened stream connection)
  2843.  02h    receive (data available)
  2844.  03h    transmit (ACK received on stream connection)
  2845.  04h    transmit flush???
  2846.  05h    foreign close (remote host closed data connection)
  2847.  06h    close (local host closed connection and protocol is complete)
  2848.  07h    error (error code passed to handler as arg)
  2849.  
  2850. (Table 2094)
  2851. Values PC/TCP user event handler is called with:
  2852.     BX = network descriptor
  2853.     CX = event type (see #2093)
  2854.     DS:DX -> arg
  2855.     ES:DI = 32-bit hint value
  2856.     STACK:    small stack, possibly the DOS stack
  2857. --------N-6120-------------------------------
  2858. INT 61 - PC/TCP kernel v2.05+ - "set_option" - SET AN OPTION ON A DESCRIPTOR
  2859.     AH = 20h
  2860.     BX = network descriptor
  2861.     CX = length of buffer (usually 04h)
  2862.     DS:DX -> buffer containing option
  2863.     SI = (ignored by v2.2-)
  2864.     DI = option to set (see #2095)
  2865. Return: CF clear if successful
  2866.     CF set on error
  2867.         AX = error code (see #1962 at INT 61"PC/TCP")
  2868. Note:    Beame&Whiteside's BWPCTCP shim only supports options 01h and 0Bh; all
  2869.       others return CF clear
  2870. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=21h
  2871.  
  2872. (Table 2095)
  2873. Values for PC/TCP option to get or set:
  2874.  01h    set non-blocking mode if non-zero
  2875.  02h    timeout of call in milliseconds
  2876.  03h    user-defined 4-byte magic cookie (not used by kernel)
  2877.  04h    TCP window or UDP buffer count (WORD, unsigned)
  2878.  06h    do TCP keep-alives if non-zero
  2879.  09h    (v2.1+) set IP precedence
  2880.  0Ah    (v2.1+) set IP type of service
  2881.  0Bh    use a privileged port if port = 0
  2882.  0Ch    turn off TCP PUSH bit and don't flush buffer every write (see AH=1Ah)
  2883. Note:    use "C" true or false values for boolean options
  2884. --------N-6121-------------------------------
  2885. INT 61 - PC/TCP kernel v2.05+ - "get_option" - GET OPTIONS APPLIED TO NET DESCR
  2886.     AH = 21h
  2887.     BX = network descriptor
  2888.     CX = length of buffer
  2889.     DS:DX -> buffer for return values
  2890.     SI = 0004h (ignored by v2.2-)
  2891.     DI = option (see #2095)
  2892. Return: CF clear if successful
  2893.         DS:DX -> value (usually 32 bits) returned by selected option
  2894.     CF set on error
  2895.         AX = error code (see #1962 at INT 61"PC/TCP")
  2896. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2897. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=20h
  2898. --------N-6122-------------------------------
  2899. INT 61 u - PC/TCP kernel v2.05+ - "net_getdesc" - ALLOCATE NETWORK DESCRIPTOR
  2900.     AH = 22h
  2901. Return: CF clear if successful
  2902.         AX = network descriptor
  2903.     CF set on error
  2904.         AX = error code (see #1962 at INT 61"PC/TCP")
  2905. Note:    the descriptor will be an integer in the range 00h-1Fh, and a DOS call
  2906.       is made to allocate this as a file descriptor.  Hence a number may
  2907.       not refer to a PC/TCP network descriptor and a DOS file handle
  2908.       simultaneously.
  2909. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h,INT 61/AH=29h
  2910. --------N-6123-------------------------------
  2911. INT 61 - PC/TCP kernel v2.05+ - "net_listen" - LISTEN FOR INCOMING CONNECTIONS
  2912.     AH = 23h
  2913.     BX = network descriptor or FFFFh to allocate descriptor
  2914.     DX = type of service
  2915.     DS:SI -> "addr" structure (see #2090)
  2916. Return: CF clear if successful
  2917.         AX = network descriptor
  2918.     CF set on error
  2919.         AX = error code (see #1962 at INT 61"PC/TCP")
  2920. Notes:    type of service and "addr" structure are as for AH=13h
  2921.     any of the address structure can be zero; normally local socket number
  2922.       is filled in prior to call
  2923. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=13h
  2924. SeeAlso: INT 63/AH=12h"BW-TCP"
  2925. --------N-6124-------------------------------
  2926. INT 61 - PC/TCP kernel v2.05+ - "net_abortall" - RESET ALL NETWORK CONNECTIONS
  2927.     AH = 24h
  2928. Return: always successful
  2929. Note:    performs "net_abort" (AH=19h) on all open non-global descriptors
  2930. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=19h
  2931. --------N-6125-------------------------------
  2932. INT 61 - PC/TCP kernel v2.05+ - "ad_res_name" - GET HOST NAME GIVEN ADDRESS
  2933.     AH = 25h
  2934.     DX,BX = IP address in network order
  2935.     CX = length of buffer for name
  2936.     DS:SI -> buffer for host name
  2937. Return: CF clear if successful
  2938.        buffer filled with ASCIZ host name
  2939.     CF set on error
  2940.         AX = error code (see #1962 at INT 61"PC/TCP")
  2941. Note:    this function will use the host table and or DNS to resolve the
  2942.       address, depending on kernel configuration.  Use this call for the
  2943.       normal gethostbyaddr function.
  2944. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=26h,INT 61/AH=27h
  2945. --------N-6126-------------------------------
  2946. INT 61 - PC/TCP kernel v2.05+ - "ad_htable" - GET HOST NAME FROM LOCAL TABLE
  2947.     AH = 26h
  2948.     DX,BX = IP address in network order
  2949.     CX = length of buffer
  2950.     DS:SI -> buffer for host name
  2951. Return: CF clear if successful
  2952.         buffer filled with ASCIZ host name
  2953.     CF set on error
  2954.         AX = error code (see #1962 at INT 61"PC/TCP")
  2955. Notes:    normally one would use AH=25h instead of this function
  2956.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  2957. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=27h
  2958. --------N-6127-------------------------------
  2959. INT 61 - PC/TCP kernel v2.05+ - "ad_domain" - GET HOST NAME FROM DNS
  2960.     AH = 27h
  2961.     DX,BX = IP address in network order
  2962.     CX = length of buffer
  2963.     DS:SI -> buffer for host name
  2964. Return: CF clear if successful
  2965.         buffer filled with ASCIZ host name
  2966.     CF set on error
  2967.         AX = error code (see #1962 at INT 61"PC/TCP")
  2968. Note:    normally one would use AH=25h instead of this function
  2969. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=25h,INT 61/AH=26h
  2970. --------N-6128-------------------------------
  2971. INT 61 - PC/TCP kernel v2.05+ - "net_swap" - EXCHANGE TWO NETWORK DESCRIPTORS
  2972.     AH = 28h
  2973.     BX = network descriptor 1
  2974.     CX = network descriptor 2
  2975. Return: CF clear if successful
  2976.     CF set on error
  2977.         AX = error code (see #1962 at INT 61"PC/TCP")
  2978. Note:    the two descriptors will exchange places; both must be local or both
  2979.       global
  2980. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  2981. --------N-6129-------------------------------
  2982. INT 61 - PC/TCP kernel v2.05+ - "net_getglobdesc" - ALLOCATE GLOBAL DESCRIPTOR
  2983.     AH = 29h
  2984. Return: CF clear if successful
  2985.         AX = network descriptor
  2986.     CF set on error
  2987.         AX = error code (see #1962 at INT 61"PC/TCP")
  2988. Note:    use this function rather than AH=22h to avoid a DOS call by the PC/TCP
  2989.       kernel; the returned descriptor will be >= 40h and cannot be used
  2990.       with "net_select" (AH=0Eh)
  2991. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=07h"PC/TCP"
  2992. SeeAlso: INT 61/AH=22h
  2993. --------N-612A-------------------------------
  2994. INT 61 - PC/TCP kernel v2.05+ - GET CONFIGURATION INFORMATION
  2995.     AH = 2Ah
  2996.     DS:SI -> 26-byte buffer for configuration information (see #2096)
  2997. Return: CF clear
  2998.     AX = 0000h
  2999.     buffer filled
  3000. Notes:    size of buffer may vary with kernel version; 26 bytes is the size for
  3001.       versions 2.05 through 2.2
  3002.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3003. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  3004.  
  3005. Format of PC/TCP configuration information:
  3006. Offset    Size    Description    (Table 2096)
  3007.  00h    BYTE    maximum TCP connections available
  3008.  01h    BYTE    maximum UDP connections available
  3009.  02h    BYTE    maximum IP connections available
  3010.  03h    BYTE    maximum Raw Net connections available
  3011.  04h    BYTE    number of TCP connections currently in use
  3012.  05h    BYTE    number of UDP connections currently in use
  3013.  06h    BYTE    number of IP connections currently in use
  3014.  07h    BYTE    number of Raw Net connections currently in use
  3015.  08h    WORD    number of local network descriptors active
  3016.  0Ah    WORD    number of global network descriptors active
  3017.  0Ch    BYTE    maximum header size on network
  3018.  0Dh    BYTE    maximum trailer size on network
  3019.  0Eh    WORD    size of large packet buffer
  3020.  10h    WORD    number of network interfaces attached
  3021.  12h    DWORD    milliseconds since kernel started
  3022.  16h    DWORD    IP broadcast address
  3023. --------N-612B-------------------------------
  3024. INT 61 - PC/TCP kernel v2.02+ - "net_alarm" - SET TIMED ASYNCHRONOUS EVENT
  3025.     AH = 2Bh
  3026.     BX = network descriptor
  3027.     CX,DX = time before alarm in milliseconds
  3028.     DS:SI -> handler which will receive call (see #2094 at INT 61/AH=1Fh)
  3029.     ES:DI = 32-bit cookie passed to handler
  3030. Return: CF clear if successful
  3031.     CF set on error
  3032.         AX = error code (see #1962 at INT 61"PC/TCP")
  3033. Notes:    this function will cause a NET_AS_ALARM to be generated; it is intended
  3034.       for TSRs, etc. to regain control periodically
  3035.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3036. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  3037. --------N-6130-------------------------------
  3038. INT 61 - PC/TCP kernel v2.05+ - "icmp_ping" - SEND ICMP ECHO REQUEST (PING)
  3039.     AH = 30h
  3040.     BX,DX = IP address of host
  3041.     CX = length of data to send
  3042. Return: CF clear if successful (i.e. reply received)
  3043.     CF set on error
  3044.         AX = error code (see #1962 at INT 61"PC/TCP")
  3045. Note:    this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3046. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP"
  3047. --------N-61---------------------------------
  3048. INT 61 u - PC/TCP kernel v2.05 - NOP for SLIP kernel
  3049.     AH = function
  3050.         31h "net_add_route"
  3051.         32h "net_del_route"
  3052.         33h "net_dump_routes"
  3053. Notes:    these functions are described as "unused" in the v2.2 documentation
  3054.     router configuration can be altered using INT 61/AH=01h
  3055.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3056. --------N-6132-------------------------------
  3057. INT 61 U - PC/TCP kernel v2.3 - GET ???
  3058.     AH = 32h
  3059. Return: AX = ???
  3060. Note:    this function is fully re-entrant, and may be called even when another
  3061.       PC/TCP kernel call is already in progress
  3062. --------N-6134-------------------------------
  3063. INT 61 U - PC/TCP kernel v2.1+ - "icmp_destun" - ???
  3064.     AH = 34h
  3065.     ???
  3066. Return: ???
  3067. Notes:    this function is described as "reserved" in the v2.2 documentation
  3068.     this function is not supported by Beame&Whiteside's BWPCTCP v3.0a shim
  3069. --------N-6150-------------------------------
  3070. INT 61 - PC/TCP kernel v2.05+ - "nm_prs_addr" - TRANSLATE NUMERICAL IP ADDRESS
  3071.     AH = 50h
  3072.     DS:DX -> ASCIZ IP address as "dotted quad" (max 127 chars)
  3073. Return: CF clear if successful
  3074.         DX:AX -> IP address
  3075.     CF set on error
  3076.         AX = error code (see #1962 at INT 61"PC/TCP")
  3077. Range:    INT 20 to INT E0, selected by configuration
  3078. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  3079. --------N-6151-------------------------------
  3080. INT 61 - PC/TCP kernel v2.05+ - "nm_htable" - RESOLVE NAME USING HOST TABLE
  3081.     AH = 51h
  3082.     CX = size of destination buffer
  3083.     DS:DX -> ASCIZ host name (max 127 chars)
  3084.     ES:DI -> destination buffer or 0000h:0000h
  3085. Return: CF clear if successful
  3086.         DX:AX -> IP address of host
  3087.         destination buffer filled with canonical host name
  3088.     CF set on error
  3089.         AX = error code (see #1962 at INT 61"PC/TCP")
  3090. Note:    this function calls DOS, and can fail if the DOS call fails
  3091. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  3092. --------N-6152-------------------------------
  3093. INT 61 - PC/TCP kernel v2.05+ - "nm_domain" - RESOLVE NAME USING DNS
  3094.     AH = 52h
  3095.     CX = size of destination buffer
  3096.     DS:DX -> ASCIZ host name (max 127 chars)
  3097.     ES:DI -> destination buffer or 0000h:0000h
  3098. Return: CF clear if successful
  3099.         DX:AX -> IP address of host
  3100.         destination buffer filled with canonical host name
  3101.     CF set on error
  3102.         AX = error code (see #1962 at INT 61"PC/TCP")
  3103. Note:    this function will poll all configured domain name servers if necessary
  3104. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  3105. --------N-6153-------------------------------
  3106. INT 61 - PC/TCP kernel v2.05- - "nm_ien116" - RESOLVE HOST NAME USING IEN116
  3107.     AH = 53h
  3108.     DS:DX -> ASCIZ name to be resolved (max 127 chars)
  3109. Return: CF clear if successful
  3110.         DX:AX -> IP address of host
  3111.     CF set on error
  3112.         AX = error code (see #1962 at INT 61"PC/TCP")
  3113. Range:    INT 20 to INT E0, selected by configuration
  3114. Note:    this function is not supported by v2.10+
  3115. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=54h
  3116. --------N-6154-------------------------------
  3117. INT 61 - PC/TCP kernel v2.05+ - "nm_res_name" - RESOLVE HOST NAME
  3118.     AH = 54h
  3119.     CX = size of destination buffer
  3120.     DS:DX -> ASCIZ host name (max 127 chars)
  3121.     ES:DI -> destination buffer or 0000h:0000h
  3122. Return: CF clear if successful
  3123.         DX:AX -> IP address of host
  3124.         destination buffer filled with canonical host name
  3125.     CF set on error
  3126.         AX = error code (see #1962 at INT 61"PC/TCP")
  3127. Note:    this function uses all configured methods in turn to resolve the
  3128.       name (numerical, then host table, then DNS, then IEN116)
  3129. BUG:    the SLIP kernel for v2.05 bounds-checks the wrong register, so values
  3130.       greater than 54h in AH may crash the system.    Other kernels may have
  3131.       this bug as well; it has been fixed in the v2.2 SLIPDRV kernel.
  3132. SeeAlso: INT 61"PC/TCP",INT 61/AH=00h"PC/TCP",INT 61/AH=50h,INT 61/AH=51h
  3133. SeeAlso: INT 61/AH=52h,INT 61/AH=53h
  3134. --------N-6155-------------------------------
  3135. INT 61 U - PC/TCP kernel v2.3 - ???
  3136.     AH = 55h
  3137.     ???
  3138. Return: ???
  3139. SeeAlso: INT 61"PC/TCP"
  3140. --------N-6156-------------------------------
  3141. INT 61 U - PC/TCP kernel v2.3 - ???
  3142.     AH = 56h
  3143.     ???
  3144. Return: ???
  3145. SeeAlso: INT 61"PC/TCP"
  3146. --------N-6157-------------------------------
  3147. INT 61 U - PC/TCP kernel v2.3 - ???
  3148.     AH = 57h
  3149.     ???
  3150. Return: ???
  3151. SeeAlso: INT 61"PC/TCP"
  3152. --------N-6158-------------------------------
  3153. INT 61 U - PC/TCP kernel v2.3 - ???
  3154.     AH = 58h
  3155.     ???
  3156. Return: ???
  3157. SeeAlso: INT 61"PC/TCP"
  3158. --------N-6159-------------------------------
  3159. INT 61 U - PC/TCP kernel v2.3 - ???
  3160.     AH = 59h
  3161.     ???
  3162. Return: ???
  3163. SeeAlso: INT 61"PC/TCP"
  3164. --------N-615A-------------------------------
  3165. INT 61 U - PC/TCP kernel v2.3 - ???
  3166.     AH = 5Ah
  3167.     ???
  3168. Return: ???
  3169. SeeAlso: INT 61"PC/TCP"
  3170. --------N-615B-------------------------------
  3171. INT 61 U - PC/TCP kernel v2.3 - ???
  3172.     AH = 5Bh
  3173.     ???
  3174. Return: ???
  3175. SeeAlso: INT 61"PC/TCP"
  3176. --------N-615C-------------------------------
  3177. INT 61 U - PC/TCP kernel v2.3 - ???
  3178.     AH = 5Ch
  3179.     ???
  3180. Return: ???
  3181. SeeAlso: INT 61"PC/TCP"
  3182. --------N-615D-------------------------------
  3183. INT 61 U - PC/TCP kernel v2.3 - ???
  3184.     AH = 5Dh
  3185.     ???
  3186. Return: ???
  3187. SeeAlso: INT 61"PC/TCP"
  3188. --------N-615E-------------------------------
  3189. INT 61 U - PC/TCP kernel v2.3 - ???
  3190.     AH = 5Eh
  3191.     ???
  3192. Return: ???
  3193. SeeAlso: INT 61"PC/TCP"
  3194. --------N-615F-------------------------------
  3195. INT 61 U - PC/TCP kernel v2.3 - ???
  3196.     AH = 5Fh
  3197.     ???
  3198. Return: ???
  3199. SeeAlso: INT 61"PC/TCP"
  3200. --------*-62---------------------------------
  3201. INT 62 - reserved for user interrupt
  3202. --------d-62---------------------------------
  3203. INT 62 - Adaptec and OMTI controllers - DRIVE 0 DATA
  3204. Notes:    this vector stores the third four bytes of the parameter table for
  3205.       hard disk 0
  3206. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 63"Adaptec"
  3207. --------b-62---------------------------------
  3208. INT 62 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  3209. Desc:    the low word of this vector contains the segment of the RAM data area
  3210.       to be used by the expansion ROM at F400h:2000h, and the high word
  3211.       contains the length of the data area; this segment and size are
  3212.       both set to 0000h if no ROM is installed at F400h:2000h
  3213. SeeAlso: INT 61"TI Professional PC",INT 63"TI Professional"
  3214. SeeAlso: INT 66"TI Professional PC"
  3215. --------b-62---------------------------------
  3216. INT 62 - HP 95LX - USED BY CALCULATOR
  3217. SeeAlso: INT 60"HP 95LX"
  3218. ----------62---------------------------------
  3219. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - ???
  3220.     AH = function (00h to 07h)
  3221.     CX = FFFEh
  3222.     DX = FFFFh
  3223.     ???
  3224. Return: ???
  3225. Note:    the installation check consists of testing for the string "DBLIBRARY"
  3226.       2 bytes past the interrupt handler
  3227. SeeAlso: AH=08h"SQL"
  3228. Index:    installation check;MS SQL Server|installation check;Sybase DBLIBRARY
  3229. ----------62---------------------------------
  3230. INT 62 - MPAUSE - ???
  3231.     details not yet avialable
  3232. Program: MPAUSE is a program by Manfred Michael which appeared in the German
  3233.      _EGA-Handbuch_ from  m&t-Verlag
  3234. --------N-62---------------------------------
  3235. INT 62 - XFS v1.76 - FILTERED PACKET DRIVER API
  3236. Program: XFS is a shareware Network File System client by Robert Juhasz
  3237. Desc:    XFS requires a packet driver to operate.  Since it does redirections,
  3238.       etc., it provides its own packet driver entry point, changing the
  3239.       signature string of the original packet driver to "XKT DRVR" so that
  3240.       it will no longer be found by the packet driver installation check
  3241. Range:    INT 61 to INT 66, selected by scanning for two consecutive free
  3242.       vectors and hooking the second
  3243. Note:    the installation check for this vector is the same as that for the
  3244.       packet driver specification: scan for the signature string "PKT DRVR"
  3245.       three bytes past the interrupt handler
  3246. SeeAlso: INT 60"Packet Driver",INT 61"XFS"
  3247. --------N-6200-------------------------------
  3248. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET PHYSICAL HARDWARE ADDRESS
  3249.     AH = 00h
  3250.     DS:DX -> 6-byte buffer for address
  3251. Return: AX = length of hardware address???
  3252. Range:    INT 4C to INT FB, selected by configuration
  3253. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  3254.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  3255.       consecutive interrupt (64h by default) if it is loaded
  3256. SeeAlso: AH=01h"ETHDEV",AH=04h"ETHDEV",AH=09h"ETHDEV",AH=0Eh"ETHDEV"
  3257. SeeAlso: AH=14h"ETHDEV",AH=18h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  3258. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  3259. --------V-620000-----------------------------
  3260. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCATE" - CREATE VIRTUAL VIDEO PAGE
  3261.     AX = 0000h
  3262.     BX = page number (0000h-003Fh)
  3263. Return: AX = status (0000h,0001h,0007h,0008h) (see #2097)
  3264. Program: FGDRIVER is the external video driver for the shareware
  3265.       Fastgraph/Light by Ted Gruber Software
  3266. Notes:    For FGDRIVER v1.10, this function was "FG_GETMODE" (see AX=003Fh);
  3267.       "FG_ALLOCATE" was AX=0042h
  3268.     The amount of memory required by the virtual video page depends on the
  3269.       current video mode
  3270.     The installation check consists of testing for the signature "FG" ten
  3271.       bytes beyond the start of the interrupt handler
  3272. SeeAlso: AX=0001h,AX=0002h,AX=0003h,AX=002Eh
  3273. Index:    installation check;Fastgraph/Light
  3274.  
  3275. (Table 2097)
  3276. Values for FGDRIVER status:
  3277.  0000h    successful
  3278.  0001h    specified page is a physical or logical page
  3279.  0007h    virtual page created/released, but memory control blocks corrupted
  3280.  0008h    not enough memory
  3281.  0009h    attempt to free a page which was never created
  3282.  FFFCh    insufficient memory
  3283.  FFFDh    page already created, or exists as physical or virtual page
  3284.  FFFEh    invalid page number
  3285.  FFFFh    memory manager not initialized
  3286. --------V-620001-----------------------------
  3287. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCCMS" - CREATE LOGICAL VIDEO PAGE (CONVMEM)
  3288.     AX = 0001h
  3289.     BX = page number (0001h-003Fh)
  3290. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  3291. Notes:    For FGDRIVER v1.10, this function was "FG_SETMODE" (see AX=0093h);
  3292.       "FG_ALLOCCMS" was AX=009Dh
  3293.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  3294.       (see AX=0012h)
  3295. SeeAlso: AX=0000h,AX=0002h,AX=0003h,AX=0012h,AX=002Eh
  3296. --------V-620002-----------------------------
  3297. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCEMS" - CREATE LOGICAL VIDEO PAGE (EMS)
  3298.     AX = 0002h
  3299.     BX = page number (0001h-003Fh)
  3300. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  3301. Notes:    For FGDRIVER v1.10, this function was "FG_TESTMODE" (see AX=00A7h);
  3302.       "FG_ALLOCEMS" was AX=009Eh
  3303.     You must first call "FG_INITEMS" (see AX=004Ch) before using this
  3304.       function
  3305.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  3306.       (see AX=0012h)
  3307. SeeAlso: AX=0000h,AX=0001h,AX=0003h,AX=0012h,AX=002Eh,AX=004Ch
  3308. --------V-620003-----------------------------
  3309. INT 62 u - FGDRIVER v3.03 - "FG_ALLOCXMS" - CREATE LOGICAL VIDEO PAGE (XMS)
  3310.     AX = 0003h
  3311.     BX = page number (0001h-003Fh)
  3312. Return: AX = status (0000h,FFFCh,FFFDh,FFFEh) (see #2097)
  3313. Notes:    For FGDRIVER v1.10, this function was "FG_BESTMODE" (see AX=0005h),
  3314.       and "FG_ALLOCXMS" was AX=009Fh
  3315.     You must first call "FG_INITXMS" (see AX=004Eh) before using this
  3316.       function
  3317.     The only operation which is allowed on logical pages is "FG_COPYPAGE"
  3318.       (see AX=0012h)
  3319. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0012h,AX=002Eh,AX=004Eh
  3320. --------V-620004-----------------------------
  3321. INT 62 u - FGDRIVER v1.10,3.03 - "FG_AUTOMODE" - GET VIDEO MODE W/MOST FEATURES
  3322.     AX = 0004h
  3323. Return: AX = proposed video mode number (see #2111 at AX=0093h)
  3324. Program: FGDRIVER is the external video driver for the shareware
  3325.       Fastgraph/Light by Ted Gruber Software
  3326. SeeAlso: AX=0005h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  3327. --------V-620005-----------------------------
  3328. INT 62 u - FGDRIVER v3.03 - "FG_BESTMODE" - GET BEST VIDEO MODE GIVEN RESOLUTN
  3329.     AX = 0005h
  3330.     BX = horizontal resolution
  3331.     CX = vertical resolution
  3332.     DX = number of video pages required (both physical and virtual)
  3333. Return: AX = proposed video mode number or FFFFh if no matching video mode
  3334. Notes:    For FGDRIVER v1.10, this function was "FG_EGACHECK" (see AX=0023h);
  3335.        "FG_BESTMODE" was AX=0003h
  3336.     You must first call "FG_SVGAINIT" (see AX=00A1h) to get SVGA video
  3337.       modes
  3338. SeeAlso: AX=0004h,AX=003Fh,AX=0093h,AX=00A1h,AX=00A7h
  3339. --------V-620006-----------------------------
  3340. INT 62 u - FGDRIVER v3.03 - "FG_BOX" - DRAW UNFILLED RECTANGLE
  3341.     AX = 0006h
  3342.     BX = left column
  3343.     CX = right column
  3344.     DX = top row
  3345.     SI = bottom row
  3346. Notes:    For FGDRIVER v1.10, this function was "FG_RESET" (see AX=0081h);
  3347.       "FG_BOX" was AX=00A2h
  3348.     The rectangle is drawn in screen space, respecting the clipping region,
  3349.       with edges of the width specified with "FG_BOXDEPTH" (see AX=0007h)
  3350.       (default = 1 is set by "FG_SETMODE")
  3351.     This function has no effect in text modes
  3352. SeeAlso: AX=0007h,AX=0008h,AX=000Ch,AX=0014h,AX=001Bh,AX=0024h,AX=0076h
  3353. --------V-620007-----------------------------
  3354. INT 62 u - FGDRIVER v3.03 - "FG_BOXDEPTH" - SET RECTANGLE BORDER WIDTH
  3355.     AX = 0007h
  3356.     BX = width of left and right edges in pixels (> 0)
  3357.     CX = width of top and bottom edges in pixels (> 0)
  3358. Note:    For FGDRIVER v1.10, this function was "FG_CURSOR" (see AX=0013h);
  3359.       "FG_BOXDEPTH" was AX=00A3h
  3360. SeeAlso: AX=0006h,AX=0008h
  3361. --------V-620008-----------------------------
  3362. INT 62 u - FGDRIVER v3.03 - "FG_BOXX" - XOR HOLLOW RECTANGLE
  3363.     AX = 0008h
  3364.     BX = left column
  3365.     CX = right column
  3366.     DX = top row
  3367.     SI = bottom row
  3368. Notes:    For FGDRIVER v1.10, this function was unused and "FG_BOXX" did not
  3369.       exist yet
  3370.     The rectangle is XORed into screen space, respecting the clipping
  3371.       region, with edges of the width specified with "FG_BOXDEPTH"
  3372.       (see AX=0007h) (default = 1 is set by "FG_SETMODE")
  3373.     This function has no effect in text modes
  3374. SeeAlso: AX=0006h,AX=0007h,AX=001Fh,AX=0020h,AX=0077h
  3375. --------V-620009-----------------------------
  3376. INT 62 u - FGDRIVER v3.03 - "FG_BUTTON" - GET JOYSTICK BUTTON STATE
  3377.     AX = 0009h
  3378.     BX = joystick number (0001h or 0002h)
  3379. Return: AX = button states
  3380.         bit 0: top button pressed
  3381.         bit 1: bottom button pressed
  3382. Note:    For FGDRIVER v1.10, this function was unused; "FG_BUTTON" was AX=0078h
  3383. SeeAlso: AX=0044h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  3384. --------V-62000A-----------------------------
  3385. INT 62 u - FGDRIVER v3.03 - "FG_CAPSLOCK" - GET STATE OF CAPSLOCK KEY
  3386.     AX = 000Ah
  3387. Return: AX = CapsLock state (0000h off, 0001h on)
  3388. Note:    For FGDRIVER v1.10, this function was "FG_GETMAXX" (see AX=003Dh);
  3389.       "FG_CAPSLOCK" was AX=0070h
  3390. SeeAlso: AX=006Ch,AX=0088h,AX=008Bh,AX=0094h
  3391. --------V-62000B-----------------------------
  3392. INT 62 u - FGDRIVER v3.03 - "FG_CHGATTR" - APPLY CURRENT TEXT ATTRIB TO CHARS
  3393.     AX = 000Bh
  3394.     BX = number of characters to recolor
  3395. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAXY" (see AX=003Eh);
  3396.       "FG_CHGATTR" was AX=0035h
  3397.     This call is ignored in graphics modes
  3398.     Starting at the current text cursor position, the specified number of
  3399.       characters have their attributes to the current text attribute
  3400. SeeAlso: AX=000Ch,AX=0030h,AX=008Ah
  3401. --------V-62000C-----------------------------
  3402. INT 62 u - FGDRIVER v3.03 - "FG_CHGTEXT" - DISPLAY STRING AT CURSOR POSITION
  3403.     AX = 000Ch
  3404.     CX = length of string
  3405.     ES:BX -> string to be displayed
  3406. Return: text cursor updated
  3407. Notes:    For FGDRIVER v1.10, this function was "FG_XALPHA" (see AX=00B0h);
  3408.       "FG_CHGTEXT" was AX=0036h
  3409.     This call is ignored in graphics modes
  3410. SeeAlso: AX=000Bh,AX=007Ch
  3411. --------V-62000D-----------------------------
  3412. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLE" - DRAW UNFILLED CIRCLE
  3413.     AX = 000Dh
  3414.     BX = radius in horizontal screen space units (> 0)
  3415. Notes:    For FGDRIVER v1.10, this function was "FG_YALPHA" (see AX=00B2h);
  3416.       "FG_CIRCLE" was AX=0030h
  3417.     The circle is drawn in screen space, centered at the current graphics
  3418.       cursor position
  3419.     This call is ignored in text modes
  3420. SeeAlso: AX=0006h,AX=0008h,AX=000Eh,AX=0024h,AX=0079h
  3421. --------V-62000E-----------------------------
  3422. INT 62 u - FGDRIVER v3.03 - "FG_CIRCLEF" - DRAW FILLED CIRCLE
  3423.     AX = 000Eh
  3424.     BX = radius in horizontal screen space units (> 0)
  3425. Notes:    For FGDRIVER v1.10, this function was "FG_XCONVERT" (see AX=00B1h);
  3426.       "FG_CIRCLEF" did not exist yet
  3427. SeeAlso: AX=0008h,AX=000Dh,AX=0025h,AX=0078h
  3428. --------V-62000F-----------------------------
  3429. INT 62 u - FGDRIVER v3.03 - "FG_CLIPMASK" - DISPLAY CLIPPED IMAGE (MASKING MAP)
  3430.     AX = 000Fh
  3431.     ES:BX -> array containing image stored as a masking map (see #2098)
  3432.     CX = number of pixel runs in masking map
  3433.     DX = width of masking map in pixels
  3434. Notes:    For FGDRIVER v1.10, this function was "FG_YCONVERT" (see AX=00B3h);
  3435.        "FG_CLIPMASK" was AX=0052h
  3436.     This call is ignored in text modes and in native EGA and VGA graphics
  3437.       modes
  3438.     The image is drawn with its lower left corner at the current graphics
  3439.       cursor position
  3440. SeeAlso: AX=0010h,AX=001Dh,AX=002Ah,AX=0086h,AX=008Ch,AX=00A5h
  3441. --------V-620010-----------------------------
  3442. INT 62 u - FGDRIVER v3.03 - "FG_CLPIMAGE" - DISPLAY CLIPPED IMAGE (BITMAP)
  3443.     AX = 0010h
  3444.     ES:BX -> mode-specific bitmap
  3445.     CX = width of bit map in bytes
  3446.     DX = height of bit map in pixel rows
  3447. Notes:    For FGDRIVER v1.10, this function was "FG_GETLINES" (see AX=003Bh);
  3448.       "FG_CLPIMAGE" was AX=004Ah
  3449.     This call is ignored in text modes
  3450.     The image is drawn with its lower left corner at the current graphics
  3451.       cursor position
  3452.     The current clipping region is used, extended to a byte boundary
  3453. SeeAlso: AX=000Fh,AX=0022h,AX=002Ch,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  3454. --------V-620011-----------------------------
  3455. INT 62 u - FGDRIVER v3.03 - "FG_CLPRECT" - DRAW FILLED RECTANGLE IN SCREEN SPCE
  3456.     AX = 0011h
  3457.     BX = screen space column of left edge
  3458.     CX = screen space column of right edge
  3459.     DX = screen space row of top edge
  3460.     SI = screen space row of bottom edge
  3461. Notes:    For FGDRIVER v1.10, this function was "FG_SETLINES" (see AX=0092h);
  3462.       "FG_CLPRECT" was AX=002Bh
  3463.     This call is ignored in text modes
  3464. SeeAlso: AX=0006h,AX=000Fh,AX=0010h,AX=0021h,AX=0080h,AX=008Ch
  3465. --------V-620012-----------------------------
  3466. INT 62 u - FGDRIVER v3.03 - "FG_COPYPAGE" - TRANSFER VIDEO PAGE CONTENTS
  3467.     AX = 0012h
  3468.     BX = source page number (0000h-003Fh)
  3469.     CX = destination page number (0000h-003Fh)
  3470. Notes:    For FGDRIVER v1.10, this function was unused;"FG_COPYPAGE" was AX=005Fh
  3471.     If both source and destination pages are logical pages, they must both
  3472.       be located in the same type (conventional, EMS, XMS) of memory
  3473. SeeAlso: AX=0083h,AX=0087h,AX=00A6h,AX=00A9h
  3474. --------V-620013-----------------------------
  3475. INT 62 u - FGDRIVER v3.03 - "FG_CURSOR" - SPECIFY WHETHER TEXT CURSR IS VISIBLE
  3476.     AX = 0013h
  3477.     BX = new state (0000h invisible, 0001h visible)
  3478. Notes:    For FGDRIVER v1.10, this function was unused; "FG_CURSOR" was AX=0007h
  3479.     This call is ignored in text modes
  3480. SeeAlso: AX=000Ch,AX=0045h,AX=0047h,AX=0055h,AX=005Fh,AX=0063h,AX=0068h
  3481. SeeAlso: AX=00AFh
  3482. --------V-620014-----------------------------
  3483. INT 62 u - FGDRIVER v3.03 - "FG_DASH" - DRAW DASHED LINE TO ABSOLUTE POSITION
  3484.     AX = 0014h
  3485.     BX = endpoint column
  3486.     CX = endpoint row
  3487.     DX = dash pattern (set bits cause drawn pixels)
  3488. Notes:    For FGDRIVER v1.10, this function was "FG_DEFCOLOR" (see AX=0016h);
  3489.       "FG_DASH" was AX=0027h
  3490.     This call is ignored in text modes
  3491.     The starting point is the current graphics cursor position; the cursor
  3492.       position is updated
  3493. SeeAlso: AX=0015h,AX=001Bh,AX=0076h
  3494. --------V-620015-----------------------------
  3495. INT 62 u - FGDRIVER v3.03 - "FG_DASHREL" - DRAW DASHED LINE TO RELATVE POSITION
  3496.     AX = 0015h
  3497.     BX = endpoint column offset
  3498.     CX = endpoint row offset
  3499.     DX = dash pattern (set bits cause drawn pixels)
  3500. Notes:    For FGDRIVER v1.10, this function was "FG_GETCOLOR" (see AX=0034h);
  3501.       "FG_DASHREL" was AX=0028h
  3502.     This call is ignored in text modes
  3503.     The starting point is the current graphics cursor position; the cursor
  3504.       position is updated
  3505. SeeAlso: AX=0014h,AX=001Ch,AX=0076h
  3506. --------V-620016-----------------------------
  3507. INT 62 u - FGDRIVER v3.03 - "FG_DEFCOLOR" - ASSIGN COLOR VALUE TO COLOR INDEX
  3508.     AX = 0016h
  3509.     BX = color index (0000h-00FFh)
  3510.     CX = new color value (0 to maximum color value for current video mode)
  3511. Notes:    For FGDRIVER v1.10, this function was "FG_GETINDEX" (see AX=0039h);
  3512.       "FG_DEFCOLOR" was AX=0014h
  3513.     This call is ignored in text modes and 256-color graphics modes
  3514. SeeAlso: AX=0034h,AX=0039h,AX=008Dh
  3515. --------V-620017-----------------------------
  3516. INT 62 u - FGDRIVER v3.03 - "FG_DEFPAGES" - DEF SRC/DEST PAGES FOR BLOCK XFERS
  3517.     AX = 0017h
  3518.     BX = source page
  3519.     CX = destination page
  3520. Desc:    specify the source and destination SVGA banks for block transfers on
  3521.       extended video pages
  3522. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTE" (see AX=006Fh);
  3523.       "FG_DEFPAGES" did not exist yet
  3524.     This function is ignored if the video controller does not support
  3525.       extended pages or the current video mode does not allow them
  3526. SeeAlso: AX=0012h,AX=00A9h
  3527. --------V-620018-----------------------------
  3528. INT 62 u - FGDRIVER v3.03 - "FG_DISPFILE" - DISPLAY STORED IMAGE
  3529.     AX = 0018h
  3530.     ES:BX -> ASCIZ filename
  3531.     CX = image width in pixels (> 0)
  3532.     DX = image format
  3533.         0000h Fastgraph standard pixel run format
  3534.         0001h packed pixel run format
  3535. Notes:    For FGDRIVER v1.10, this function was "FG_PALETTES" (see AX=0070h);
  3536.       "FG_DISPFILE" was AX=004Fh
  3537.     This call is ignored in text modes
  3538.     The image is displayed with its lower left corner at the current
  3539.       graphics cursor position
  3540. SeeAlso: AX=0019h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  3541. --------V-620019-----------------------------
  3542. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAY" - DISPLAY IMAGE (STD PIXEL RUN FORMAT)
  3543.     AX = 0019h
  3544.     ES:BX -> pixel run map (pairs of bytes: color index, count)
  3545.     CX = number of pixel runs to display
  3546.     DX = width of image in pixels (> 0)
  3547. Notes:    For FGDRIVER v1.10, this function was "FG_SETATTR" (see AX=008Ah);
  3548.       "FG_DISPLAY" was AX=004Dh
  3549.     This call is ignored in text modes
  3550.     The image is displayed with its lower left corner at the current
  3551.       graphics cursor position
  3552. SeeAlso: AX=0018h,AX=001Ah,AX=009Ah,AX=009Bh,AX=009Ch
  3553. --------V-62001A-----------------------------
  3554. INT 62 u - FGDRIVER v3.03 - "FG_DISPLAYP" - DISPLAY IMAGE (PACKED PIXEL RUNS)
  3555.     AX = 001Ah
  3556.     ES:BX -> pixel run map (trios of bytes: colors, count1, count2; colors
  3557.           contains the color for the first run in its high nybble and
  3558.           the color for the second run in its low nybble)
  3559.     CX = number of pixel runs to display
  3560.     DX = width of image in pixels (> 0)
  3561. Notes:    For FGDRIVER v1.10, this function was "FG_SETCOLOR" (see AX=008Dh);
  3562.       "FG_DISPLAYP" was AX=004Eh
  3563.     This call is ignored in text modes
  3564.     The image is displayed with its lower left corner at the current
  3565.       graphics cursor position
  3566. SeeAlso: AX=0018h,AX=0019h,AX=009Ah,AX=009Bh,AX=009Ch
  3567. --------V-62001B-----------------------------
  3568. INT 62 u - FGDRIVER v3.03 - "FG_DRAW" - DRAW SOLID LINE TO ABSOLUTE POSITION
  3569.     AX = 001Bh
  3570.     BX = endpoint column
  3571.     CX = endpoint row
  3572. Notes:    For FGDRIVER v1.10, this function was "FG_SETRGB" (see AX=0096h);
  3573.       "FG_DRAW" was AX=0025h
  3574.     This call is ignored in text modes
  3575.     The starting point is the current graphics cursor position; the cursor
  3576.       position is updated
  3577. SeeAlso: AX=0014h,AX=001Eh,AX=001Fh,AX=0024h,AX=0076h,AX=0077h
  3578. --------V-62001C-----------------------------
  3579. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMAP" - DISPLAY MODE-INDEPENDENT BIT MAP
  3580.     AX = 001Ch
  3581.     ES:BX -> bitmap (each set bit is pixel drawn in current color)
  3582.     CX = width of bitmap in bytes
  3583.     DX = height of bitmap in pixel rows
  3584. Note:    For FGDRIVER v1.10, this function was "FG_GETRGB" (see AX=0042h);
  3585.       "FG_DRAWMAP" was AX=0047h
  3586. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  3587. --------V-62001D-----------------------------
  3588. INT 62 u - FGDRIVER v3.03 - "FG_DRAWMASK" - DISPLAY IMAGE (MASKING MAP)
  3589.     AX = 001Dh
  3590.     ES:BX -> array containing image stored as a masking map (see #2098)
  3591.     CX = number of pixel runs in masking map
  3592.     DX = width of masking map in pixels
  3593. Notes:    For FGDRIVER v1.10, this function was "FG_MAPRGB" (see AX=005Ah);
  3594.       "FG_DRAWMASK" was AX=0051h
  3595.     This call is ignored in text modes and in native EGA and VGA graphics
  3596.       modes
  3597.     The image is drawn with its lower left corner at the current graphics
  3598.       cursor position
  3599. SeeAlso: AX=000Fh,AX=001Dh,AX=0086h,AX=008Ch
  3600.  
  3601. Format of FGDRIVER masking map:
  3602. Offset    Size    Description    (Table 2098)
  3603.  00h    BYTE    length of first "protect" run (pixels remain unchanged)
  3604.  01h    BYTE    length of first "zero" run (pixels set to background color)
  3605.  02h    BYTE    length of second "protect" run
  3606.  03h    BYTE    length of second "zero" run
  3607.     ...
  3608. --------V-62001E-----------------------------
  3609. INT 62 u - FGDRIVER v3.03 - "FG_DRAWREL" - DRAW SOLID LINE TO RELATIVE POSITION
  3610.     AX = 001Eh
  3611.     BX = endpoint column offset
  3612.     CX = endpoint row offset
  3613. Notes:    For FGDRIVER v1.10, this function was "FG_ERASE" (see AX=0026h);
  3614.       "FG_DRAWREL" was AX=0026h
  3615.     This call is ignored in text modes
  3616.     The starting point is the current graphics cursor position; the cursor
  3617.       position is updated
  3618. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Fh,AX=0024h,AX=0076h
  3619. --------V-62001F-----------------------------
  3620. INT 62 u - FGDRIVER v3.03 - "FG_DRAWRELX" - XOR SOLID LINE TO RELATIVE POSITION
  3621.     AX = 001Fh
  3622.     BX = endpoint column offset
  3623.     CX = endpoint row offset
  3624. Desc:    draw a solid line, XORing each pixel onto the screen
  3625. Notes:    For FGDRIVER v1.10, this function was "FG_POINT" (see AX=0076h);
  3626.       "FG_DRAWRELX" did not exist yet
  3627.     This call is ignored in text modes
  3628.     The starting point is the current graphics cursor position; the cursor
  3629.       position is updated
  3630. SeeAlso: AX=0006h,AX=000Dh,AX=001Bh,AX=001Eh,AX=0024h,AX=0077h
  3631. --------V-620020-----------------------------
  3632. INT 62 u - FGDRIVER v3.03 - "FG_DRAWX" - XOR SOLID LINE TO ABSOLUTE POSITION
  3633.     AX = 0020h
  3634.     BX = endpoint column
  3635.     CX = endpoint row
  3636. Desc:    draw a solid line, XORing each pixel onto the screen
  3637. Notes:    For FGDRIVER v1.10, this function was "FG_GETPIXEL" (see AX=0041h);
  3638.       "FG_DRAWX" did not exist yet
  3639.     This call is ignored in text modes
  3640.     The starting point is the current graphics cursor position; the cursor
  3641.       position is updated
  3642. SeeAlso: AX=001Bh,AX=001Fh,AX=0076h
  3643. --------V-620021-----------------------------
  3644. INT 62 u - FGDRIVER v3.03 - "FG_DRECT" - DRAW DITHERED RECTANGLE IN SCRN SPACE
  3645.     AX = 0021h
  3646.     BX = screen space column of left edge
  3647.     CX = screen space column of right edge
  3648.     DX = screen space row of top edge
  3649.     SI = screen space row of bottom edge
  3650.     ES:DI -> dithering matrix (video-mode dependent)
  3651. Notes:    For FGDRIVER v1.10, this function was "FG_GETXPOS" (see AX=0045h);
  3652.       "FG_DRECT" was AX=002Ch
  3653.     This call is ignored in text modes
  3654. SeeAlso: AX=0006h,AX=0008h,AX=0011h,AX=0031h,AX=0072h,AX=0080h
  3655. --------V-620022-----------------------------
  3656. INT 62 u - FGDRIVER v3.03 - "FG_DRWIMAGE" - DISPLAY BITMAPPED IMAGE
  3657.     AX = 0022h
  3658.     ES:BX -> video mode-specific bitmap
  3659.     CX = width of bitmap in bytes
  3660.     DX = height of bitmap in pixel rows
  3661. Notes:    For FGDRIVER v1.10, this function was "FG_GETYPOS" (see AX=0047h);
  3662.       "FG_DRWIMAGE" was AX=0049h
  3663.     The image will be drawn with its lower left corner at the current
  3664.       cursor position (either text or graphics)
  3665. SeeAlso: AX=0010h,AX=002Ch,AX=0038h,AX=007Eh,AX=0085h
  3666. --------V-620023-----------------------------
  3667. INT 62 u - FGDRIVER v3.03 - "FG_EGACHECK" - GET INFO ABOUT ACTIVE EGA DISPLAY
  3668.     AX = 0023h
  3669. Return: AX = number of 64K banks of video memory, or 0000h if no EGA or EGA
  3670.           without an Enhanced Color Display
  3671. Note:    For FGDRIVER v1.10, this function was "FG_MOVE" (see AX=0068h);
  3672.       "FG_EGACHECK" was AX=0005h
  3673. SeeAlso: AX=00A2h
  3674. --------V-620024-----------------------------
  3675. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSE" - DRAW UNFILLED ELLIPSE IN SCRN SPACE
  3676.     AX = 0024h
  3677.     BX = horizontal semi-axis length in screen space units
  3678.     CX = vertical semi-axis length in screen space units
  3679. Notes:    For FGDRIVER v1.10, this function was "FG_MOVEREL" (see AX=0069h);
  3680.       "FG_ELLIPSE" was AX=002Dh
  3681.     This call is ignored in text modes
  3682.     The ellipse is centered at the current graphics cursor position
  3683. SeeAlso: AX=0006h,AX=000Dh,AX=0025h,AX=0076h,AX=0079h
  3684. --------V-620025-----------------------------
  3685. INT 62 u - FGDRIVER v3.03 - "FG_ELLIPSEF" - DRAW FILLED ELLIPSE IN SCREEN SPACE
  3686.     AX = 0025h
  3687.     BX = horizontal semi-axis length in screen space units
  3688.     CX = vertical semi-axis length in screen space units
  3689. Notes:    For FGDRIVER v1.10, this function was "FG_DRAW" (see AX=001Bh);
  3690.       "FG_ELLIPSEF" did not exist yet
  3691.     This call is ignored in text modes
  3692.     The ellipse is centered at the current graphics cursor position
  3693. SeeAlso: AX=0006h,AX=000Eh,AX=0024h,AX=0076h,AX=0078h
  3694. --------V-620026-----------------------------
  3695. INT 62 u - FGDRIVER v3.03 - "FG_ERASE" - CLEAR THE ACTIVE VIDEO PAGE
  3696.     AX = 0026h
  3697. Note:    For FGDRIVER v1.10, this function was "FG_DRAWREL" (see AX=001Eh);
  3698.       "FG_ERASE" was AX=001Eh
  3699.     This function sets each pixel to 0 in graphics modes, each character
  3700.       cell to a blank with a gray foreground attribute in text modes
  3701. SeeAlso: AX=0027h,AX=0029h,AX=002Bh
  3702. --------V-620027-----------------------------
  3703. INT 62 u - FGDRIVER v3.03 - "FG_FADEIN" - FADE IN HIDDEN PAGE
  3704.     AX = 0027h
  3705.     BX = delay (0000h = fastest possible fade-in)
  3706. Notes:    For FGDRIVER v1.10, this function was "FG_DASH" (see AX=0014h);
  3707.       "FG_FADEIN" was AX=0064h
  3708.     The current hidden page is copied to the current visible page in small
  3709.       random sections to produce a fade-in effect
  3710.     This call is ignored in text modes
  3711. SeeAlso: AX=0026h,AX=0028h,AX=0029h
  3712. --------V-620028-----------------------------
  3713. INT 62 u - FGDRIVER v3.03 - "FG_FADEOUT" - FADE OUT TO CURRENT COLOR
  3714.     AX = 0028h
  3715.     BX = delay (0000h = fastest possible fade-out)
  3716. Notes:    For FGDRIVER v1.10, this function was "FG_DASHREL" (see AX=0015h);
  3717.       "FG_FADEOUT" was AX=0065h
  3718.     The current visible page is filled with pixels of the current color in
  3719.       small random sections to give a fade-out effect
  3720.     This call is ignored in text modes
  3721. SeeAlso: AX=0026h,AX=0027h,AX=0029h
  3722. --------V-620029-----------------------------
  3723. INT 62 u - FGDRIVER v3.03 - "FG_FILLPAGE" - FILL THE ACTIVE VIDEO PAGE
  3724.     AX = 0029h
  3725. Desc:    fill the active video page with pixels of the current color (graphics
  3726.       modes) or the block character DBh with the current character
  3727.       attributes (text modes)
  3728. Note:    For FGDRIVER v1.10, this function was "FG_SETCLIP" (see AX=008Ch);
  3729.       "FG_FILLPAGE" did not exist yet
  3730. SeeAlso: AX=0026h,AX=0027h,AX=0028h
  3731. --------V-62002A-----------------------------
  3732. INT 62 u - FGDRIVER v3.03 - "FG_FLIPMASK" - DISPLAY INV CLIPPED IMAGE (MASKMAP)
  3733.     AX = 002Ah
  3734.     ES:BX -> array containing image stored as a masking map (see #2098)
  3735.     CX = number of pixel runs in masking map
  3736.     DX = width of masking map in pixels
  3737. Notes:    For FGDRIVER v1.10, this function was "FG_RECT" (see AX=0080h);
  3738.       "FG_FLIPMASK" was AX=0054h
  3739.     This call is ignored in text modes and in native EGA and VGA graphics
  3740.       modes
  3741.     The image is drawn with its lower left corner at the current graphics
  3742.       cursor position
  3743. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ch,AX=0086h,AX=008Ch,AX=00A5h
  3744. --------V-62002B-----------------------------
  3745. INT 62 u - FGDRIVER v3.03 - "FG_FLOOD" - FLOOD FILL ARBITRARY CLOSED REGION
  3746.     AX = 002Bh
  3747.     BX = starting column
  3748.     CX = starting row
  3749. Desc:    fill the bounded region around the specified point (respecting clipping
  3750.       region) with the currrent color
  3751. Notes:    For FGDRIVER v1.10, this function was "FG_CLPRECT" (see AX=0011h);
  3752.       "FG_FLOOD" did not exist yet
  3753.     This function is ignored in text modes
  3754. SeeAlso: AX=0026h,AX=006Eh
  3755. --------V-62002C-----------------------------
  3756. INT 62 u - FGDRIVER v3.03 - "FG_FLPIMAGE" - DISPLAY INV CLIPPED IMAGE (BITMAP)
  3757.     AX = 002Ch
  3758.     ES:BX -> mode-specific bitmap
  3759.     CX = width of bit map in bytes
  3760.     DX = height of bit map in pixel rows
  3761. Notes:    For FGDRIVER v1.10, this function was "FG_DRECT" (see AX=0021h);
  3762.       "FG_FLPIMAGE" was AX=004Ch
  3763.     This call is ignored in text modes
  3764.     The image is drawn with its lower left corner at the current graphics
  3765.       cursor position
  3766.     The current clipping region is used, extended to a byte boundary
  3767. SeeAlso: AX=0010h,AX=0022h,AX=002Ah,AX=0038h,AX=0085h,AX=008Ch,AX=009Ah
  3768. --------V-62002D-----------------------------
  3769. INT 62 u - FGDRIVER v3.03 - "FG_FONTSIZE" - SPECIFY FONT SIZE FOR TEXT OUTPUT
  3770.     AX = 002Dh
  3771.     BX = desired character height in scan lines (8, 14, 16)
  3772. Notes:    For FGDRIVER v1.10, this function was "FG_ELLIPSE" (see AX=0024h);
  3773.       "FG_FONTSIZE" did not exist yet
  3774.     This call is ignored if the current mode is not a VGA or SVGA graphics
  3775.       mode, or the specified character height is not 8, 14, or 16
  3776. SeeAlso: AX=007Ch
  3777. --------V-62002E-----------------------------
  3778. INT 62 u - FGDRIVER v3.03 - "FG_FREEPAGE" - FREE VIRTUAL OR LOGICAL VIDEO PAGE
  3779.     AX = 002Eh
  3780.     BX = page number (0000h-003Fh)
  3781. Return: AX = status (0000h,0001h,0007h,0009h) (see #2097)
  3782. Note:    For FGDRIVER v1.10, this function was "FG_POLYGON" (see AX=0079h);
  3783.       "FG_FREEPAGE" was AX=0043h
  3784. SeeAlso: AX=0000h,AX=0001h,AX=0002h,AX=0003h
  3785. --------V-62002F-----------------------------
  3786. INT 62 u - FGDRIVER v3.03 - "FG_GETADDR" - GET SEGMENT OF ACTIVE VIDEO PAGE
  3787.     AX = 002Fh
  3788. Return: AX = segment of active video page
  3789. Note:    For FGDRIVER v1.10, this function was "FG_PAINT" (see AX=006Eh);
  3790.       "FG_GETADDR" was AX=0044h
  3791. SeeAlso: AX=0036h,AX=008Fh
  3792. --------V-620030-----------------------------
  3793. INT 62 u - FGDRIVER v3.03 - "FG_GETATTR" - GET CHARACTER ATTRIB FOR POSITION
  3794.     AX = 0030h
  3795.     BX = row
  3796.     CX = column
  3797. Return: AX = character attribute at specified location on active video page
  3798. Notes:    For FGDRIVER v1.10, this function was "FG_CIRCLE" (see AX=000Dh);
  3799.       "FG_GETATTR" was AX=0037h
  3800.     This call is ignored in graphics modes
  3801. SeeAlso: AX=000Bh,AX=0032h,AX=0034h,AX=008Ah
  3802. --------V-620031-----------------------------
  3803. INT 62 u - FGDRIVER v3.03 - "FG_GETBLOCK" - GRAB RECTANGLE OF DISPLAY
  3804.     AX = 0031h
  3805.     ES:BX -> buffer for screen contents
  3806.     CX = leftmost column
  3807.     DX = rightmost column
  3808.     SI = top row
  3809.     DI = bottom row
  3810. Notes:    For FGDRIVER v1.10, this function was unused, and "FG_GETBLOCK" did not
  3811.       exist yet
  3812.     In text modes, coordinates are character positions; in graphics modes,
  3813.       they are defined in screen space, and the left and right edges are
  3814.       adjusted to a byte boundary if necessary
  3815.     Use "FG_IMAGESIZ" (see AX=004Bh) to determine the required buffer size
  3816. SeeAlso: AX=0038h,AX=004Bh,AX=007Dh
  3817. --------V-620032-----------------------------
  3818. INT 62 u - FGDRIVER v3.03 - "FG_GETCHAR" - GET CHARACTER FOR SCREEN POSITION
  3819.     AX = 0032h
  3820.     BX = row
  3821.     CX = column
  3822. Return: AX = character at specified location on active video page
  3823. Notes:    For FGDRIVER v1.10, this function was "FG_TEXT" (see AX=00A8h);
  3824.       "FG_GETCHAR" was AX=0038h
  3825.     This call is ignored in graphics modes
  3826. SeeAlso: AX=000Bh,AX=0030h,AX=007Ch,AX=008Ah,AX=00A8h
  3827. --------V-620033-----------------------------
  3828. INT 62 u - FGDRIVER v3.03 - "FG_GETCLOCK" - GET CLOCK TICKS SINCE MIDNIGHT
  3829.     AX = 0033h
  3830. Return: DX:AX = number of clock ticks since midnight
  3831. Note:    For FGDRIVER v1.10, this function was "FG_LOCATE" (see AX=0055h);
  3832.       "FG_GETCLOCK" was AX=0099h
  3833. SeeAlso: INT 1A/AH=00h
  3834. --------V-620034-----------------------------
  3835. INT 62 u - FGDRIVER v3.03 - "FG_GETCOLOR" - GET CURRENT TEXT ATTRIBUTE
  3836.     AX = 0034h
  3837. Return: AX = current text attribute or color index (graphics modes)
  3838. Note:    For FGDRIVER v1.10, this function was "FG_WHERE" (see AX=00AFh);
  3839.       "FG_GETCOLOR" was AX=0015h
  3840. SeeAlso: AX=000Bh,AX=0030h,AX=008Ah
  3841. --------V-620035-----------------------------
  3842. INT 62 u - FGDRIVER v3.03 - "FG_GETDACS" - GET VIDEO DAC CONTENTS
  3843.     AX = 0035h
  3844.     CX = number of DAC registers to return (0001h to 0100h)
  3845.     DX = starting DAC register number (0000h to 00FFh)
  3846.     ES:BX -> buffer for DAC red/green/blue triples
  3847. Notes:    For FGDRIVER v1.10, this function was "FG_CHGATTR" (see AX=000Bh);
  3848.       "FG_GETDACS" was AX=00A4h
  3849.     The register number wraps back to zero after FFh
  3850. SeeAlso: AX=0042h,AX=006Fh,AX=008Eh
  3851. --------V-620036-----------------------------
  3852. INT 62 u - FGDRIVER v3.03 - "FG_GETENTRY" - GET PAGE TYPE AND ADDRESS
  3853.     AX = 0036h
  3854.     ES:BX -> variable pointer record (see #2099)
  3855.     CX = page number (00h-3Fh)
  3856. Notes:    For FGDRIVER v1.10, this function was "FG_CHGTEXT" (see AX=000Ch);
  3857.       "FG_GETENTRY" did not exist yet
  3858.     Page addresses are segments for pages stored in conventional memory
  3859.       (including physical and virtual pages), and EMS or XMS handles for
  3860.       pages stored in EMS or XMS
  3861. SeeAlso: AX=0000h,AX=008Fh
  3862.  
  3863. Format of FGDRIVER variable pointer record:
  3864. Offset    Size    Description    (Table 2099)
  3865.  00h    WORD    segment of WORD buffer for page address
  3866.  02h    WORD    offset of WORD buffer for page address
  3867.  04h    WORD    segment of WORD buffer for page type (se #2100)
  3868.  06h    WORD    offset of WORD buffer for page type
  3869.  
  3870. (Table 2100)
  3871. Values for FGDRIVER page type:
  3872.  0000h    unallocated
  3873.  0001h    physical
  3874.  0002h    virtual
  3875.  0003h    logical page, stored in expanded memory (EMS)
  3876.  0004h    logical page, stored in extended memory (XMS)
  3877.  0005h    logical page, stored in conventional memory
  3878. --------V-620037-----------------------------
  3879. INT 62 u - FGDRIVER v3.03 - "FG_GETHPAGE" - GET CURRENT HIDDEN VIDEO PAGE NUM
  3880.     AX = 0037h
  3881. Return: AX = current hidden video page number (0000h-003Fh)
  3882. Note:    For FGDRIVER v1.10, this function was "FG_GETATTR" (see AX=0030h);
  3883.       "FG_GETHPAGE" was AX=0040h
  3884. SeeAlso: AX=0040h,AX=0043h,AX=0091h
  3885. --------V-620038-----------------------------
  3886. INT 62 u - FGDRIVER v3.03 - "FG_GETIMAGE" - STORE IMAGE AS BITMAP
  3887.     AX = 0038h
  3888.     ES:BX -> buffer for video mode-specific bitmap
  3889.     CX = width of bitmap in bytes
  3890.     DX = height of bitmap in pixel rows
  3891. Note:    For FGDRIVER v1.10, this function was "FG_GETCHAR" (see AX=0032h);
  3892.       "FG_GETIMAGE" was AX=0048h
  3893. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=007Eh,AX=0085h
  3894. --------V-620039-----------------------------
  3895. INT 62 u - FGDRIVER v3.03 - "FG_GETINDEX" - GET COLOR VALUE FOR COLOR INDEX
  3896.     AX = 0039h
  3897.     BX = color index (0000h to 00FFh)
  3898. Return: AX = color value for specified color index
  3899. Notes:    For FGDRIVER v1.10, this function was unused;"FG_GETINDEX" was AX=0016h
  3900.     This call returns the value passed to it in text and 256-color
  3901.       graphics modes
  3902. SeeAlso: AX=0016h,AX=0034h
  3903. --------V-62003A-----------------------------
  3904. INT 62 u - FGDRIVER v3.03 - "FG_GETKEY" - GET NEXT KEYSTROKE
  3905.     AX = 003Ah
  3906.     ES:BX -> variable pointer record (see #2101)
  3907. Return: (after next keystroke if no typeahead) variables updated
  3908. Note:    For FGDRIVER v1.10, this function was unused; "FG_GETKEY" was AX=006Eh
  3909. SeeAlso: AX=000Ah,AX=0051h,AX=0054h,AX=00ADh,INT 16/AH=00h
  3910.  
  3911. Format of FGDRIVER variable pointer record:
  3912. Offset    Size    Description    (Table 2101)
  3913.  00h    WORD    segment of BYTE buffer for ASCII keycode
  3914.  02h    WORD    offset of BYTE buffer for ASCII keycode
  3915.  04h    WORD    segment of BYTE buffer for extended keycode
  3916.  06h    WORD    offset of BYTE buffer for extended keycode
  3917. --------V-62003B-----------------------------
  3918. INT 62 u - FGDRIVER v3.03 - "FG_GETLINES" - GET TEXT ROWS FOR CURR VIDEO MODE
  3919.     AX = 003Bh
  3920. Return: AX = number of text rows on screen in current video mode
  3921. Note:    For FGDRIVER v1.10, this function was unused;"FG_GETLINES" was AX=0010h
  3922. SeeAlso: AX=0092h,AX=00A2h
  3923. --------V-62003C-----------------------------
  3924. INT 62 u - FGDRIVER v3.03 - "FG_GETMAP" - STORE IMAGE AS MODE-INDEPENDNT BITMAP
  3925.     AX = 003Ch
  3926.     ES:BX -> buffer for video mode-independent bitmap
  3927.     CX = width of bitmap in bytes
  3928.     DX = height of bitmap in pixel rows
  3929. Return: each bit in bitmap is set if corresponding pixel is of the current
  3930.       color, cleared otherwise
  3931. Notes:    For FGDRIVER v1.10, this function was "FG_GETPAGE" (see AX=0040h);
  3932.       "FG_GETMAP" was AX=0046h
  3933.     This call is ignored in text modes
  3934. SeeAlso: AX=0010h,AX=001Ch,AX=0022h
  3935. --------V-62003D-----------------------------
  3936. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXX" - GET MAXIMUM COLUMN IN SCREEN SPACE
  3937.     AX = 003Dh
  3938. Return: AX = maximum X coordinate in screen space
  3939.         (or character space if in text mode)
  3940. Note:    For FGDRIVER v1.10, this function was "FG_SETPAGE" (see AX=0095h);
  3941.       "FG_GETMAXX" was AX=000Ah
  3942. SeeAlso: AX=003Eh,AX=00A1h
  3943. --------V-62003E-----------------------------
  3944. INT 62 u - FGDRIVER v3.03 - "FG_GETMAXY" - GET MAXIMUM ROW IN SCREEN SPACE
  3945.     AX = 003Eh
  3946. Return: AX = maximum Y coordinate in screen space
  3947.         (or character space if in text mode)
  3948. Note:    For FGDRIVER v1.10, this function was "FG_GETVPAGE" (see AX=0043h);
  3949.       "FG_GETMAXY" was AX=000Bh
  3950. SeeAlso: AX=003Dh,AX=00A1h
  3951. --------V-62003F-----------------------------
  3952. INT 62 u - FGDRIVER v3.03 - "FG_GETMODE" - GET CURRENT VIDEO MODE NUMBER
  3953.     AX = 003Fh
  3954.     ES:BX -> WORD ???
  3955. Return: AX = current video mode number
  3956. Note:    For FGDRIVER v1.10, this function was "FG_SETVPAGE" (see AX=0098h);
  3957.       "FG_GETMODE" was AX=0000h
  3958. SeeAlso: AX=0093h
  3959. --------V-620040-----------------------------
  3960. INT 62 u - FGDRIVER v3.03 - "FG_GETPAGE" - GET ACTIVE VIDEO PAGE NUMBER
  3961.     AX = 0040h
  3962. Return: AX = active video page (0000h-003Fh)
  3963. Note:    For FGDRIVER v1.10, this function was "FG_GETHPAGE" (see AX=0037h);
  3964.       "FG_GETPAGE" was AX=003Ch
  3965. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0095h
  3966. --------V-620041-----------------------------
  3967. INT 62 u - FGDRIVER v3.03 - "FG_GETPIXEL" - GET COLOR OF SPECIFIED PIXEL
  3968.     AX = 0041h
  3969.     BX = column in screen space
  3970.     CX = row in screen space
  3971. Return: AX = color value of pixel (0 to num_colors-1)
  3972.         0000h in text modes
  3973. Note:    For FGDRIVER v1.10, this function was "FG_SETHPAGE" (see AX=0091h);
  3974.       "FG_GETPIXEL" was AX=0020h
  3975. SeeAlso: AX=0030h,AX=0032h,AX=0076h,AX=0077h
  3976. --------V-620042-----------------------------
  3977. INT 62 u - FGDRIVER v3.03 - "FG_GETRGB" - GET VIDEO DAC REGISTER CONTENTS
  3978.     AX = 0042h
  3979.     ES:BX -> variable pointer record (see #2102)
  3980.     CX = DAC register number
  3981. Return: variables updated
  3982. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCATE" (see AX=0000h);
  3983.       "FG_GETRGB" was AX=001Ch
  3984.     This call is ignored in text modes and CGA/EGA video modes (since
  3985.       they do not use DAC registers)
  3986. SeeAlso: AX=0035h,AX=006Fh,AX=008Eh
  3987.  
  3988. Format of FGDRIVER variable pointer record:
  3989. Offset    Size    Description    (Table 2102)
  3990.  00h    WORD    segment of WORD buffer for red component of DAC register
  3991.  02h    WORD    offset of WORD buffer for red component
  3992.  04h    WORD    segment of WORD buffer for green component of DAC register
  3993.  06h    WORD    offset of WORD buffer for green component
  3994.  08h    WORD    segment of WORD buffer for blue component of DAC register
  3995.  0Ah    WORD    offset of WORD buffer for blue component
  3996. --------V-620043-----------------------------
  3997. INT 62 u - FGDRIVER v3.03 - "FG_GETVPAGE" - GET VISIBLE VIDEO PAGE NUMBER
  3998.     AX = 0043h
  3999. Return: AX = visible video page (0000h-003Fh)
  4000. Note:    For FGDRIVER v1.10, this function was "FG_FREEPAGE" (see AX=002Eh);
  4001.       "FG_GETVPAGE" was AX=003Eh
  4002. SeeAlso: AX=0037h,AX=0040h,AX=0098h
  4003. --------V-620044-----------------------------
  4004. INT 62 u - FGDRIVER v3.03 - "FG_GETXJOY" - GET HORIZONTAL POSITION OF JOYSTICK
  4005.     AX = 0044h
  4006.     BX = joystick number (0001h or 0002h)
  4007. Return: AX = horizontal position of joystick
  4008.         FFFFh if joystick uninitialized or not present
  4009. Notes:    For FGDRIVER v1.10, this function was "FG_GETADDR" (see AX=002Fh);
  4010.       "FG_GETXJOY" was AX=0076h
  4011.     The actual coordinates are processor- and joystick-dependent
  4012.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  4013. SeeAlso: AX=0009h,AX=0046h,AX=004Dh,AX=0050h,AX=0061h
  4014. --------V-620045-----------------------------
  4015. INT 62 u - FGDRIVER v3.03 - "FG_GETXPOS" - GET GRAPHICS CURSOR COLUMN
  4016.     AX = 0045h
  4017. Return: AX = screen space X coordinate of graphics cursor position
  4018. Note:    For FGDRIVER v1.10, this function was "FG_RESIZE" (see AX=0082h);
  4019.       "FG_GETXPOS" was AX=0021h
  4020. SeeAlso: AX=0047h,AX=0068h,AX=0069h
  4021. --------V-620046-----------------------------
  4022. INT 62 u - FGDRIVER v3.03 - "FG_GETYJOY" - GET VERTICAL POSITION OF JOYSTICK
  4023.     AX = 0046h
  4024.     BX = joystick number (0001h or 0002h)
  4025. Return: AX = vertical position of joystick
  4026.         FFFFh if joystick uninitialized or not present
  4027. Notes:    For FGDRIVER v1.10, this function was "FG_GETMAP" (see AX=003Ch);
  4028.       "FG_GETYJOY" was AX=0077h
  4029.     The actual coordinates are processor- and joystick-dependent
  4030.     You must call "FG_INITJOY" (AX=004Dh) before using this function
  4031. SeeAlso: AX=0009h,AX=0044h,AX=004Dh,AX=0050h,AX=0061h
  4032. --------V-620047-----------------------------
  4033. INT 62 u - FGDRIVER v3.03 - "FG_GETYPOS" - GET GRAPHICS CURSOR ROW
  4034.     AX = 0047h
  4035. Return: AX = screen space Y coordinate of graphics cursor position
  4036. Note:    For FGDRIVER v1.10, this function was "FG_DRAWMAP" (see AX=001Ch);
  4037.       "FG_GETYPOS" was AX=0022h
  4038. SeeAlso: AX=0045h,AX=0068h,AX=0069h
  4039. --------V-620048-----------------------------
  4040. INT 62 u - FGDRIVER v3.03 - "FG_HUSH" - STOP ASYNCHRONOUS SOUND IMMEDIATELY
  4041.     AX = 0048h
  4042. Notes:    For FGDRIVER v1.10, this function was "FG_GETIMAGE" (see AX=0038h);
  4043.       "FG_HUSH" was AX=008Eh
  4044.     This function immediately stops any sounds started with "FG_MUSICB",
  4045.       "FG_SOUNDS", or "FG_VOICES"; it is ignored if no asynchronous sound
  4046.       is playing
  4047. SeeAlso: AX=0049h,AX=006Bh,AX=009Eh,AX=00ABh
  4048. --------V-620049-----------------------------
  4049. INT 62 u - FGDRIVER v3.03 - "FG_HUSHNEXT" - STOP ASYNCHRONOUS SOUND
  4050.     AX = 0049h
  4051. Program: FGDRIVER is the external video driver for the shareware
  4052.       Fastgraph/Light by Ted Gruber Software
  4053. Notes:    For FGDRIVER v1.10, this function was "FG_DRWIMAGE" (see AX=0022h);
  4054.       "FG_HUSHNEXT" was AX=008Fh
  4055.     This function stops any sounds started with "FG_MUSICB", "FG_SOUNDS",
  4056.       or "FG_VOICES" after the current repetition completes; it is ignored
  4057.       unless asynchronous sound is continuous
  4058. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  4059. --------V-62004A-----------------------------
  4060. INT 62 u - FGDRIVER v3.03 - "FG_IMAGEBUF" - SPECIFY TEMPORARY IMAGE BUFFER
  4061.     AX = 004Ah
  4062.     ES:BX -> buffer to be used when creating or displaying GIF/PCX/PPR/SPR
  4063.           images
  4064.     CX = size of buffer in bytes or 0000h to use internal buffer
  4065. Notes:    For FGDRIVER v1.10, this function was "FG_CLPIMAGE" (see AX=0010h);
  4066.       "FG_IMAGEBUF" did not exist yet
  4067.     Fastgraph's internal buffer is 4096 bytes; this function allows the
  4068.       application to define a larger buffer which will typically speed
  4069.       processing
  4070. SeeAlso: AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  4071. --------V-62004B-----------------------------
  4072. INT 62 u - FGDRIVER v3.03 - "FG_IMAGESIZ" - DETERMINE IMAGE STORAGE REQUIREMENT
  4073.     AX = 004Bh
  4074.     BX = image width in pixels
  4075.     CX = image height in pixels
  4076. Note:    For FGDRIVER v1.10, this function was "FG_REVIMAGE" (see AX=0085h);
  4077.       "FG_IMAGESIZ" was AX=0062h
  4078. Return: DX:AX = size in bytes of mode-specific bitmap for current video mode
  4079. SeeAlso: AX=0031h,AX=007Dh
  4080. --------V-62004C-----------------------------
  4081. INT 62 u - FGDRIVER v3.03 - "FG_INITEMS" - INITIALIZE EXPANDED MEMORY USE
  4082.     AX = 004Ch
  4083. Return: AX = status
  4084.         0000h successful
  4085.         FFFFh expanded memory manager inaccessible or not installed
  4086. Notes:    For FGDRIVER v1.10, this function was "FG_FLPIMAGE" (see AX=002Ch);
  4087.       "FG_INITEMS" was AX=00A0h
  4088. SeeAlso: AX=0002h,AX=004Eh
  4089. --------V-62004D-----------------------------
  4090. INT 62 u - FGDRIVER v3.03 - "FG_INITJOY" - INITIALIZE JOYSTICK USE
  4091.     AX = 004Dh
  4092.     BX = joystick number (0001h or 0002h)
  4093. Return: AX = status
  4094.         0000h successful
  4095.         FFFFh joystick not connected or no game port
  4096. Notes:    For FGDRIVER v1.10, this function was "FG_DISPLAY" (see AX=0019h);
  4097.       "FG_INITJOY" was AX=0075h
  4098.     Fastgraph assumes that the requested joystick is centered at the time
  4099.       this function is called
  4100. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=0050h,AX=0061h
  4101. --------V-62004E-----------------------------
  4102. INT 62 u - FGDRIVER v3.03 - "FG_INITXMS" - INITIALIZE EXTENDED MEMORY USE
  4103.     AX = 004Eh
  4104. Return: AX = status
  4105.         0000h successful
  4106.         FFFFh extended memory manager inaccessible or not installed
  4107. Note:    For FGDRIVER v1.10, this function was "FG_DISPLAYP" (see AX=001Ah);
  4108.       "FG_INITXMS" was AX=00A1h
  4109. SeeAlso: AX=0003h,AX=004Ch
  4110. --------V-62004F-----------------------------
  4111. INT 62 u - FDGRIVER v3.03 - "FG_INSIDE" - CHECK IF POINT INSIDE CONVEX POLYGON
  4112.     AX = 004Fh
  4113.     ES:BX -> vertex array
  4114.     CX = number of vertices
  4115.     DX = screen space column of point to test
  4116.     SI = screen space row of point to test
  4117. Return: AX = result
  4118.         0000h point is outside polygon
  4119.         0001h point is inside polygon
  4120.         undefined if not a convex polygon
  4121. Note:    For FGDRIVER v1.10, this function was "FG_DISPFILE" (see AX=0018h);
  4122.       "FG_INSIDE" did not exist yet
  4123. SeeAlso: AX=0078h,AX=0079h,AX=007Ah
  4124. --------V-620050-----------------------------
  4125. INT 62 u - FGDRIVER v3.03 - "FG_INTJOY" - GET KEYCODES CORRESP TO JOYSTICK POS
  4126.     AX = 0050h
  4127.     CX = joystick number (0001h or 0002h)
  4128.     ES:BX -> variable pointer record (see #2103)
  4129. Notes:    For FGDRIVER v1.10, this function was "FG_PATTERN" (see AX=0072h);
  4130.       "FG_INTJOY" was AX=0079h
  4131.     If the indicated joystick has not been initialized with AX=0075h, both
  4132.       the button code and joystick position will be set to 00h
  4133.     If either button is pressed, a button code of 0Dh is returned;
  4134.       otherwise, a button code of 00h is returned
  4135. SeeAlso: AX=0009h,AX=0044h,AX=0046h,AX=004Dh,AX=0061h
  4136.  
  4137. Format of FGDRIVER variable pointer record:
  4138. Offset    Size    Description    (Table 2103)
  4139.  00h    WORD    segment of BYTE buffer for button code
  4140.  02h    WORD    offset of BYTE buffer for button code
  4141.  04h    WORD    segment of BYTE buffer for joystick position
  4142.  06h    WORD    offset of BYTE buffer for joystick position
  4143. --------V-620051-----------------------------
  4144. INT 62 u - FGDRIVER v3.03 - "FG_INTKEY" - GET KEYSTROKE, NO WAIT
  4145.     AX = 0051h
  4146.     ES:BX -> variable pointer record (see #2104)
  4147. Return: variables updated
  4148. Notes:    For FGDRIVER v1.10, this function was "FG_DRAWMASK" (see AX=001Dh);
  4149.       "FG_INTKEY" was AX=006Fh
  4150.     If the keyboard buffer is empty, both the ASCII and extended keycodes
  4151.       are set to 00h
  4152. SeeAlso: AX=000Ah,AX=003Ah,AX=0054h,AX=00ADh,INT 16/AH=01h
  4153.  
  4154. Format of FGDRIVER variable pointer record:
  4155. Offset    Size    Description    (Table 2104)
  4156.  00h    WORD    segment of BYTE buffer for ASCII keycode
  4157.  02h    WORD    offset of BYTE buffer for ASCII keycode
  4158.  04h    WORD    segment of BYTE buffer for extended keycode
  4159.  06h    WORD    offset of BYTE buffer for extended keycode
  4160. --------V-620052-----------------------------
  4161. INT 62 u - FGDRIVER v3.03 - "FG_JUSTIFY" - SET TEXT OUTPUT JUSTIFICATION
  4162.     AX = 0052h
  4163.     BX = horizontal justification
  4164.           (00h centered, 01h right-justified, FFh left-justified)
  4165.     CX = vertical justification
  4166.           (00h centered, 01h top of characters, FFh bottom of chars)
  4167. Note:    For FGDRIVER v1.10, this function was "FG_CLIPMASK" (see AX=000Fh);
  4168.       "FG_JUSTIFY" did not exist yet
  4169. SeeAlso: AX=000Ch,AX=002Dh,AX=007Ch
  4170. --------V-620053-----------------------------
  4171. INT 62 u - FGDRIVER v3.03 - "FG_KBINIT" - ENABLE/DISABLE LOW-LEVEL KBD HANDLER
  4172.     AX = 0053h
  4173.     BX = new state (0000h disabled, 0001h enabled)
  4174. Notes:    For FGDRIVER v1.10, this function was "FG_REVMASK" (see AX=0086h);
  4175.       "FG_KBINIT" did not exist yet
  4176.     When the low-level handler is enabled, "FG_GETKEY", "FG_INTKEY",
  4177.       "FG_WAITKEY", and all other functions calling DOS or BIOS keyboard
  4178.       services become unavailable
  4179. SeeAlso: AX=0054h
  4180. --------V-620054-----------------------------
  4181. INT 62 u - FGDRIVER v3.03 - "FG_KBTEST" - CHECK WHETHER SPECIFIED KEY PRESSED
  4182.     AX = 0054h
  4183.     BX = scan code of desired key
  4184. Return: AX = state
  4185.         0000h key is not pressed
  4186.         0001h key is currently pressed
  4187. Notes:    For FGDRIVER v1.10, this function was "FG_FLIPMASK" (see AX=002Ah);
  4188.       "FG_KBTEST" did not exist yet
  4189.     The low-level keyboard handler must have been enabled with AX=0053h
  4190. SeeAlso: AX=0053h,INT 16/AH=01h
  4191. --------V-620055-----------------------------
  4192. INT 62 u - FGDRIVER v3.03 - "FG_LOCATE" - SET TEXT-MODE CURSOR POSITION
  4193.     AX = 0055h
  4194.     BX = row
  4195.     CX = column
  4196. Notes:    For FGDRIVER v1.10, this function was unused; "FG_LOCATE" was AX=0033h
  4197.     There are only eight text cursors shared by successive groups of
  4198.       eight video pages (pages 0, 8, 16, ... share one cursor, 1, 9, ...
  4199.       share the second, etc)
  4200. SeeAlso: AX=0045h,AX=0047h,AX=0068h,AX=00AFh
  4201. --------V-620056-----------------------------
  4202. INT 62 u - FGDRIVER v3.03 - UNUSED
  4203.     AX = 0056h
  4204. Return: AX destroyed
  4205. --------V-620057-----------------------------
  4206. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPCX" - CREATE PCX FILE FROM SCREEN WINDOW
  4207.     AX = 0057h
  4208.     BX = left edge in screen space units
  4209.     CX = right edge in screen space units
  4210.     DX = top edge in screen space units
  4211.     SI = bottom edge in screen space units
  4212.     ES:DI -> ASCIZ filename of PCX file to create
  4213. Return: AX = status
  4214.         0000h successful
  4215.         0001h file not created
  4216. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPCX" was AX=0061h
  4217.     The PCX file is created from the specified region of the active video
  4218.       page; the left and right edges are adjusted to a byte boundary if
  4219.       necessary
  4220.     If the specified file already exists, it is overwritten
  4221.     This call is ignored in text and Hercules low-resolution graphics modes
  4222. SeeAlso: AX=004Ah,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  4223. --------V-620058-----------------------------
  4224. INT 62 u - FGDRIVER v3.03 - "FG_MAKEPPR" - CREATE PACKED PIXEL RUN FILE
  4225.     AX = 0058h
  4226.     BX = left edge in screen space units
  4227.     CX = right edge in screen space units
  4228.     DX = top edge in screen space units
  4229.     SI = bottom edge in screen space units
  4230.     ES:DI -> ASCIZ filename of PPR file to create
  4231. Return: AX = status
  4232.         0000h successful
  4233.         0001h file not created
  4234. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MAKEPPR" did not
  4235.       exist yet
  4236.     The PPR file is created from the specified region of the active video
  4237.       page; the left and right edges are adjusted to byte boundaries if
  4238.       necessary
  4239.     If the specified file already exists, it is overwritten
  4240.     This call is ignored in text modes
  4241. SeeAlso: AX=004Ah,AX=0057h,AX=0059h,AX=009Ah,AX=009Bh,AX=009Ch
  4242. --------V-620059-----------------------------
  4243. INT 62 u - FGDRIVER v3.03 - "FG_MAKESPR" - CREATE STANDARD PIXEL RUN FILE
  4244.     AX = 0059h
  4245.     BX = left edge in screen space units
  4246.     CX = right edge in screen space units
  4247.     DX = top edge in screen space units
  4248.     SI = bottom edge in screen space units
  4249.     ES:DI -> ASCIZ filename of SPR file to create
  4250. Return: AX = status
  4251.         0000h successful
  4252.         0001h file not created
  4253. Note:    For FGDRIVER v1.10, this function was unused; "FG_MAKESPR" did not
  4254.       exist yet
  4255.     The SPR file is created from the specified region of the active video
  4256.       page; the left and right edges are adjusted to byte boundaries if
  4257.       necessary
  4258.     If the specified file already exists, it is overwritten
  4259.     This call is ignored in text modes
  4260. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=009Ah,AX=009Bh,AX=009Ch
  4261. --------V-62005A-----------------------------
  4262. INT 62 u - FGDRIVER v3.03 - "FG_MAPRGB" - MAP COLOR COMPONENTS INTO PALETTE VAL
  4263.     AX = 005Ah
  4264.     BX = red component
  4265.     CX = green component
  4266.     DX = blue component
  4267. Return: AX = mode-specific palette value corresponding to specified components
  4268. Notes:    For FGDRIVER v1.10, this function was "FG_SAVE" (see AX=0087h);
  4269.       "FG_MAPRGB" was AX=001Dh
  4270.     This function is only meaningful in 16-color graphics modes
  4271. SeeAlso: AX=0042h,AX=0096h
  4272. --------V-62005B-----------------------------
  4273. INT 62 u - FGDRIVER v3.03 - "FG_MEASURE" - GET DELAY UNITS PER CLOCK TICK
  4274.     AX = 005Bh
  4275. Return: AX = delay units per clock tick (processor-dependent)
  4276. Notes:    For FGDRIVER v1.10, this function was "FG_RESTORE" (see AX=0083h);
  4277.       "FG_MEASURE" was AX=0098h
  4278.     These delay units are used by "FG_STALL" (see AX=009Fh)
  4279. SeeAlso: AX=009Fh
  4280. --------V-62005C-----------------------------
  4281. INT 62 u - FGDRIVER v3.03 - "FG_MEMAVAIL" - QUERY AMOUNT OF FREE MEMORY
  4282.     AX = 005Ch
  4283. Return: DX:AX = number of bytes of conventional memory available
  4284. Note:    For FGDRIVER v1.10, this function was "FG_TRANSFER" (see AX=00A9h);
  4285.       "FG_MEMAVAIL" was AX=009Bh
  4286. SeeAlso: AX=004Ch,AX=005Dh
  4287. --------V-62005D-----------------------------
  4288. INT 62 u - FGDRIVER v3.03 - "FG_MEMORY" - GET SIZE OF VIDEO MEMORY
  4289.     AX = 005Dh
  4290. Return: AX = size of video memory in KB
  4291. Notes:    For FGDRIVER v1.10, this function was "FG_TCXFER" (see AX=00A6h);
  4292.       "FG_MEMORY" did not exist yet
  4293.     You must first call "FG_SVGAINIT" (see AX=00A1h) before using this
  4294.       function
  4295. SeeAlso: AX=005Ch
  4296. --------V-62005E-----------------------------
  4297. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEBUT" - GET MOUSE BUTTON PRESS/RELEASE CNTS
  4298.     AX = 005Eh
  4299.     CX = mouse button (1 = left press, 2 = right press, 3 = middle press,
  4300.           -1=left release, -2=right release, -3=middle release)
  4301.     ES:BX -> variable pointer record (see #2105)
  4302. Return: variables updated
  4303. Notes:    For FGDRIVER v1.10, this function was "FG_TCMASK" (see AX=00A5h);
  4304.       "FG_MOUSEBUT" was AX=007Ch
  4305.     This function returns the count of presses or releases since the last
  4306.       call to this function; if the count is zero, row and column will
  4307.       also be zero
  4308. SeeAlso: AX=005Fh,AX=0061h,AX=0064h
  4309.  
  4310. Format of FGDRIVER variable pointer record:
  4311. Offset    Size    Description    (Table 2105)
  4312.  00h    WORD    segment of WORD buffer for press/release count
  4313.  02h    WORD    offset of WORD buffer for press/release count
  4314.  04h    WORD    segment of WORD buffer for screen space col of last press/rls
  4315.  06h    WORD    offset of WORD buffer for screen space col of last press/rels
  4316.  08h    WORD    segment of WORD buffer for screen space row of last press/rls
  4317.  0Ah    WORD    offset of WORD buffer for screen space row of last press/rls
  4318. --------V-62005F-----------------------------
  4319. INT 62 u - FGDRIVER v3.03 - "FG_MOUSECUR" - SPECIFY TEXT-MODE MOUSE CURSOR
  4320.     AX = 005Fh
  4321.     BX = screen mask
  4322.     CX = cursor mask
  4323. Notes:    For FGDRIVER v1.10, this function was "FG_COPYPAGE" (see AX=0012h);
  4324.       "FG_MOUSECUR" was AX=007Eh
  4325.     This call is ignored in graphics modes
  4326. SeeAlso: AX=0065h,AX=0067h
  4327. --------V-620060-----------------------------
  4328. INT 62 u - FGDRIVER v1.10 only - "FG_DISPPCX" - DISPLAY PCX FILE
  4329.     AX = 0060h
  4330.     ES:BX -> ASCIZ filename
  4331.     CX = flags
  4332.         bit 0: use current palette rather than PCX file's palette
  4333.         bits 1-15 reserved (0)
  4334. Return: AX = status
  4335.         0000h success
  4336.         0001h file not found
  4337.         0002h file is not a valid PCX file
  4338. Notes:    This call is ignored in text modes and Hercules low-resolution graphics
  4339.     The image is displayed with its upper left corner at the current
  4340.       graphics cursor position
  4341. SeeAlso: AX=009Ah
  4342. --------V-620060-----------------------------
  4343. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEFIN" - UNHOOK FASTGRAPH MOUSE HANDLER
  4344.     AX = 0060h
  4345. Notes:    For FGDRIVER v1.10, this function was "FG_DISPPCX", which no longer
  4346.       exists; "FG_MOUSEFIN" did not exist yet
  4347.     This function should be called before switching back to text mode if
  4348.       "FG_MOUSEINI" was called while in an SVGA graphics mode
  4349. SeeAlso: AX=0061h
  4350. --------V-620061-----------------------------
  4351. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEINI" - INITIALIZE MOUSE SUPPORT
  4352.     AX = 0061h
  4353. Return: AX = status
  4354.         0002h two-button mouse
  4355.         0003h three-button mouse
  4356.         FFFFh initialization failed
  4357. Notes:    For FGDRIVER v1.10, this function was "FG_MAKEPCX" (see AX=0057h);
  4358.       "FG_MOUSEINI" was AX=007Ah
  4359.     After this call, the mouse cursor is invisible
  4360. SeeAlso: AX=0060h"3.03",AX=0062h,AX=0066h
  4361. --------V-620062-----------------------------
  4362. INT 62 u - FGDRIVER v3.03 - "FG_MOUSELIM" - SPECIFY MOUSE CURSOR LIMITS
  4363.     AX = 0062h
  4364.     BX = left-most position allowed for mouse cursor
  4365.     CX = right-most position allowed
  4366.     DX = top-most position allowed
  4367.     SI = bottom-most position allowed
  4368. Note:    For FGDRIVER v1.10, this function was "FG_IMAGESIZ" (see AX=004Bh);
  4369.       "FG_MOUSELIM" was AX=0080h
  4370. SeeAlso: AX=0061h,AX=0063h,INT 33/AX=0007h,INT 33/AX=0008h
  4371. --------V-620063-----------------------------
  4372. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEMOV" - SET MOUSE CURSOR POSITION
  4373.     AX = 0063h
  4374.     BX = new column
  4375.     CX = new row
  4376. Notes:    For FGDRIVER v1.10, this function was unused;"FG_MOUSEMOV" was AX=0081h
  4377.     This function will not move the mouse cursor outside the bounding box
  4378.       specified with AX=0080h
  4379. SeeAlso: AX=0062h,AX=0064h,INT 33/AX=0004h
  4380. --------V-620064-----------------------------
  4381. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPOS" - GET CURRENT MOUSE POSITION
  4382.     AX = 0064h
  4383.     ES:BX -> variable pointer record (see #2106)
  4384. Notes:    For FGDRIVER v1.10, this function was "FG_FADEIN" (see AX=0027h);
  4385.       "FG_MOUSEPOS" was AX=007Dh
  4386. SeeAlso: AX=0063h
  4387.  
  4388. Format of FGDRIVER variable pointer record:
  4389. Offset    Size    Description    (Table 2106)
  4390.  00h    WORD    segment of WORD buffer for mouse column
  4391.  02h    WORD    offset of WORD buffer for mouse column
  4392.  04h    WORD    segment of WORD buffer for mouse row
  4393.  06h    WORD    offset of WORD buffer for mouse row
  4394.  08h    WORD    segment of WORD buffer for button status
  4395.  0Ah    WORD    offset of WORD buffer for button status
  4396. Note:    button status: bit 0 = left button, bit 1 = right, bit 2 = middle
  4397. --------V-620065-----------------------------
  4398. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEPTR" - SPECIFY GRAPH-MODE MOUSE CURSOR
  4399.     AX = 0065h
  4400.     ES:BX -> masks (16-byte screen mask followed by 16-byte cursor mask)
  4401.     CX = X offset of hot spot from upper left corner
  4402.     DX = Y offset of hot spot from upper left corner
  4403. Notes:    For FGDRIVER v1.10, this function was "FG_FADEOUT" (see AX=0028h);
  4404.       "FG_MOUSEPTR" was AX=007Fh
  4405.     This call is ignored in text modes
  4406. SeeAlso: AX=005Fh,INT 33/AX=0009h
  4407. --------V-620066-----------------------------
  4408. INT 62 u - FGDRIVER v3.03 - "FG_MOUSESPD" - SET MOUSE CURSOR SPEED
  4409.     AX = 0066h
  4410.     BX = horizontal mickeys per eight pixels of movement (default 16)
  4411.     CX = vertical mickeys per eight pixels of movement (default 16)
  4412. Note:    For FGDRIVER v1.10, this function was "FG_PAN" (see AX=0071h);
  4413.       "FG_MOUSESPD" was AX=0082h
  4414. SeeAlso: INT 33/AX=000Fh,INT 33/AX=001Ah
  4415. --------V-620067-----------------------------
  4416. INT 62 u - FGDRIVER v3.03 - "FG_MOUSEVIS" - SET MOUSE CURSOR VISIBILITY
  4417.     AX = 0067h
  4418.     BX = new state (0000h invisible, 0001h visible)
  4419. Note:    For FGDRIVER v1.10, this function was "FG_SCROLL" (see AX=0089h);
  4420.       "FG_MOUSEVIS" was AX=007Bh
  4421. SeeAlso: AX=0061h,INT 33/AX=0001h,INT 33/AX=0002h
  4422. --------V-620068-----------------------------
  4423. INT 62 u - FGDRIVER v3.03 - "FG_MOVE" - SET GRAPHICS CURSOR POSITION
  4424.     AX = 0068h
  4425.     BX = new column
  4426.     CX = new row
  4427. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVE" was AX=0023h
  4428.     This call is ignored in text modes
  4429. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0063h,AX=0069h,AX=00AFh
  4430. --------V-620069-----------------------------
  4431. INT 62 u - FGDRIVER v3.03 - "FG_MOVEREL" - ADJUST GRAPHICS CURSOR POSITION
  4432.     AX = 0069h
  4433.     BX = column offset
  4434.     CX = row offset
  4435. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MOVEREL" was AX=0024h
  4436.     This call is ignored in text modes
  4437. SeeAlso: AX=0045h,AX=0047h,AX=0068h
  4438. --------V-62006A-----------------------------
  4439. INT 62 u - FGDRIVER v3.03 - "FG_MUSIC" - PLAY SERIES OF NOTES
  4440.     AX = 006Ah
  4441.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  4442. Return: after music completed
  4443. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSIC" was AX=008Ch
  4444.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4445.       AX=008Dh) is already in progress
  4446. SeeAlso: AX=006Bh,AX=009Dh,AX=00AAh
  4447. --------V-62006B-----------------------------
  4448. INT 62 u - FGDRIVER v3.03 - "FG_MUSICB" - PLAY SERIES OF NOTES IN BACKGROUND
  4449.     AX = 006Bh
  4450.     CX = number of repetitions (negative = continuous play)
  4451.     ES:BX -> '$'-terminated music string in BASIC PLAY format
  4452. Notes:    For FGDRIVER v1.10, this function was unused; "FG_MUSICB" was AX=008Dh
  4453.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  4454.       AX=008Dh) is already in progress
  4455. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  4456. --------V-62006C-----------------------------
  4457. INT 62 u - FGDRIVER v3.03 - "FG_NUMLOCK" - GET STATE OF NUMLOCK KEY
  4458.     AX = 006Ch
  4459. Return: AX = NumLock state (0000h off, 0001h on)
  4460. Note:    For FGDRIVER v1.10, this function was unused; "FG_NUMLOCK" was AX=0072h
  4461. SeeAlso: AX=000Ah,AX=0088h,AX=008Bh,AX=0094h
  4462. --------V-62006D-----------------------------
  4463. INT 62 u - FGDRIVER v3.03 - "FG_PAGESIZE" - GET VIDEO PAGE SIZE FOR CURR MODE
  4464.     AX = 006Dh
  4465. Return: DX:AX = page size in bytes
  4466. Note:    For FGDRIVER v1.10, this function was "FG_WAITKEY" (see AX=00ADh);
  4467.       "FG_PAGESIZE" did not exist yet
  4468. SeeAlso: AX=005Dh
  4469. --------V-62006E-----------------------------
  4470. INT 62 u - FGDRIVER v3.03 - "FG_PAINT" - FLOOD CLOSED REGION WITH COLOR
  4471.     AX = 006Eh
  4472.     BX = column
  4473.     CX = row
  4474. Notes:    For FGDRIVER v1.10, this function was "FG_GETKEY" (see AX=003Ah);
  4475.       "FG_PAINT" was AX=002Fh
  4476.     This function fills an arbitrary closed region around the specified
  4477.       point with the current color; the screen edges are not considered
  4478.       region boundaries
  4479.     This call is ignored in text modes
  4480. SeeAlso: AX=002Bh
  4481. --------V-62006F-----------------------------
  4482. INT 62 u - FGDRIVER v3.03 - "FG_PALETTE" - SET PALETTE / SET VIDEO DAC REGISTER
  4483.     AX = 006Fh
  4484. ---CGA 4-color graphics---
  4485.     BX = CGA paletee number
  4486.     CX = background color
  4487. ---CGA 2-color graphics---
  4488.     BX ignored
  4489.     CX = foreground color
  4490. ---16-color graphics---
  4491.     BX = palette register number
  4492.     CX = palette value
  4493. ---256-color graphics---
  4494.     BX = DAC register number
  4495.     CX =  DAC value
  4496. Notes:    For FGDRIVER v1.10, this function was "FG_INTKEY" (see AX=0051h);
  4497.       "FG_PALETTE" was AX=0017h
  4498.     This function is ignored in text modes and Hercules graphics modes
  4499.     Few EGA/VGA adapters correctly set the foreground color in CGA mode 6
  4500. SeeAlso: AX=0035h,AX=0042h,AX=0070h,AX=008Eh
  4501. --------V-620070-----------------------------
  4502. INT 62 u - FGDRIVER v3.03 - "FG_PALETTES" - SET ALL PALETTE REGISTERS
  4503.     AX = 0070h
  4504.     ES:BX -> array of 16 WORDs containing values for palette registers
  4505.           (or first 16 DAC registers in 256-color modes)
  4506. Notes:    For FGDRIVER v1.10, this function was "FG_CAPSLOCK" (see AX=000Ah);
  4507.       "FG_PALETTES" was AX=0018h
  4508.     This function is ignored in text modes, CGA and Hercules graphics modes
  4509. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,AX=008Eh
  4510. --------V-620071-----------------------------
  4511. INT 62 u - FGDRIVER v3.03 - "FG_PAN" - SET SCREEN ORIGIN
  4512.     AX = 0071h
  4513.     BX = new column for screen origin
  4514.     CX = new row for screen origin
  4515. Note:    For FGDRIVER v1.10, this function was "FG_SETCAPS" (see AX=008Bh);
  4516.       "FG_PAN" was AX=0066h
  4517. SeeAlso: AX=0095h
  4518. --------V-620072-----------------------------
  4519. INT 62 u - FGDRIVER v3.03 - "FG_PATTERN" - SPECIFY DISPLAY PATTERN FOR COLOR
  4520.     AX = 0072h
  4521.     BX = index of pattern to define
  4522.     CX = number of predefined display pattern
  4523. Notes:    For FGDRIVER v1.10, this function was "FG_NUMLOCK" (see AX=006Ch);
  4524.       "FG_PATTERN" was AX=0050h
  4525.     When displaying a pixel run map, Fastgraph uses the pattern associated
  4526.       with each color index rather than displaying the actual color
  4527.     This call has no effect in text and 256-color graphics modes
  4528. SeeAlso: AX=0021h,AX=0039h
  4529. --------V-620073-----------------------------
  4530. INT 62 u - FGDRIVER v3.03 - "FG_PCXHEAD" - GET PCX FILE HEADER
  4531.     AX = 0073h
  4532.     ES:BX -> variable pointer record (see #2107)
  4533. Return: AX = status
  4534.         0000h successful
  4535.         FFFEh not a PCX file
  4536.         FFFFh file does not exist
  4537. Note:    For FGDRIVER v1.10, this function was "FG_SETNUM" (see AX=0094h);
  4538.       "FG_PCXHEAD" did not exist yet
  4539. SeeAlso: AX=0074h,AX=009Ah
  4540.  
  4541. Format of FGDRIVER variable pointer record:
  4542. Offset    Size    Description    (Table 2107)
  4543.  00h    WORD    segment of ASCIZ filename
  4544.  02h    WORD    offset of ASCIZ filename
  4545.  04h    WORD    segment of 128-byte buffer for PCX header
  4546.  06h    WORD    offset of 128-byte buffer for PCX header
  4547. --------V-620074-----------------------------
  4548. INT 62 u - FGDRIVER v3.03 - "FG_PCXMODE" - GET OPTIMAL VIDEO MODE FOR DISPLAY
  4549.     AX = 0074h
  4550.     ES:BX -> PCX header (see AX=0073h)
  4551. Return: AX = optimal video mode for PCX file
  4552.         FFFEh not a valid PCX header
  4553.         FFFFh unable to determine compatible video mode
  4554. Note:    For FGDRIVER v1.10, this function was "FG_SCRLOCK" (see AX=0088h);
  4555.       "FG_PCXMODE" did not exist yet
  4556. SeeAlso: AX=0073h,AX=009Ah
  4557. --------V-620075-----------------------------
  4558. INT 62 u - FGDRIVER v3.03 - "FG_PLAYING" - DETERMINE WHETHER ASYNC SOUND ACTIVE
  4559.     AX = 0075h
  4560. Return: AX = sound state (0 = no asynchronous sound, 1 = async sound playing)
  4561. Note:    For FGDRIVER v1.10, this function was "FG_INITJOY" (see AX=004Dh);
  4562.       "FG_PLAYING" was AX=0091h
  4563. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00ABh
  4564. --------V-620076-----------------------------
  4565. INT 62 u - FGDRIVER v3.03 - "FG_POINT" - DISPLAY A PIXEL
  4566.     AX = 0076h
  4567.     BX = column
  4568.     CX = row
  4569. Notes:    For FGDRIVER v1.10, this function was "FG_GETXJOY" (see AX=0044h);
  4570.       "FG_POINT" was AX=001Fh
  4571.     This call is ignored in text modes
  4572. SeeAlso: AX=0006h,AX=001Bh,AX=0041h,AX=0077h
  4573. --------V-620077-----------------------------
  4574. INT 62 u - FGDRIVER v3.03 - "FG_POINTX" - DISPLAY A PIXEL IN XOR MODE
  4575.     AX = 0077h
  4576.     BX = column
  4577.     CX = row
  4578. Notes:    For FGDRIVER v1.10, this function was "FG_GETYJOY" (see AX=0046h);
  4579.       "FG_POINTX" did not exist yet
  4580.     This call is ignored in text modes
  4581. SeeAlso: AX=0041h,AX=0076h
  4582. --------V-620078-----------------------------
  4583. INT 62 u - FGDRIVER v3.03 - "FG_POLYFILL" - DRAW A FILLED CONVEX POLYGON
  4584.     AX = 0078h
  4585.     CX = number of vertices
  4586.     ES:BX -> variable pointer record (see #2108)
  4587. Notes:    For FGDRIVER v1.10, this function was "FG_BUTTON" (see AX=0009h);
  4588.       "FG_POLYFILL" did not exist yet
  4589.     The vertex array consists of pairs of words specifying the X and Y
  4590.       coordinates of each vertex; the work array is used internally and
  4591.       must contain at least four times as many bytes as the polygon is
  4592.       high in pixels
  4593.     This function is ignored in text modes
  4594.     If the polygon is non-convex, only a portion of it may be filled
  4595. SeeAlso: AX=000Eh,AX=0025h,AX=0079h,AX=007Ah,AX=007Bh
  4596.  
  4597. Format of FGDRIVER variable pointer record:
  4598. Offset    Size    Description    (Table 2108)
  4599.  00h    WORD    segment of vertex array
  4600.  02h    WORD    offset of vertex array
  4601.  04h    WORD    segment of work array
  4602.  06h    WORD    offset of work array
  4603. --------V-620079-----------------------------
  4604. INT 62 u - FGDRIVER v3.03 - "FG_POLYGON" - DRAW AN UNFILLED POLYGON
  4605.     AX = 0079h
  4606.     CX = number of vertices in polygon
  4607.     ES:BX -> variable pointer record (see #2109)
  4608. Notes:    For FGDRIVER v1.10, this function was "FG_INTJOY" (see AX=0050h);
  4609.       "FG_POLYGON" was AX=002Eh
  4610.     This call is ignored in text modes
  4611. SeeAlso: AX=0078h,AX=007Ah,AX=007Bh
  4612.  
  4613. Format of FGDRIVER variable pointer record:
  4614. Offset    Size    Description    (Table 2109)
  4615.  00h    WORD    segment of WORD array containing vertex columns
  4616.  02h    WORD    offset of WORD array containing vertex columns
  4617.  04h    WORD    segment of WORD array containing vertex rows
  4618.  06h    WORD    offset of WORD array containing vertex rows
  4619. --------V-62007A-----------------------------
  4620. INT 62 u - FGDRIVER v3.03 - "FG_POLYLINE" - DRAW AN UNFILLED POLYGON
  4621.     AX = 007Ah
  4622.     CX = number of vertices in polygon
  4623.     ES:BX -> vertex array (see #2110)
  4624. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEINI" (see AX=0061h);
  4625.       "FG_POLYLINE" did not exist yet
  4626.     This function is equivalent to "FG_POLYGON", but uses only a single
  4627.       array to define the vertices
  4628.     This call is ignored in text modes
  4629. SeeAlso: AX=0076h,AX=0078h,AX=0079h,AX=007Bh
  4630.  
  4631. Format of FGDRIVER vertex array element:
  4632. Offset    Size    Description    (Table 2110)
  4633.  00h    WORD    column
  4634.  02h    WORD    row
  4635. --------V-62007B-----------------------------
  4636. INT 62 u - FGDRIVER v3.03 - "FG_POLYOFF" - DEFINE POLYGON DRAWING OFFSET
  4637.     AX = 007Bh
  4638.     BX = horizontal offset (default 0)
  4639.     CX = vertical offset (default 0)
  4640. Desc:    define the offsets applied to all vertices of polygons drawn with
  4641.       "FG_POLYFILL" or "FG_POLYLINE"
  4642. Note:    For FGDRIVER v1.10, this function was "FG_MOUSEVIS" (see AX=0067h);
  4643.       "FG_POLYOFF" did not exist yet
  4644. SeeAlso: AX=0078h,AX=007Ah
  4645. --------V-62007C-----------------------------
  4646. INT 62 u - FGDRIVER v3.03 - "FG_PRINT" - DISPLAY STRING OF HARDWARE CHARACTERS
  4647.     AX = 007Ch
  4648.     CX = length of string
  4649.     ES:BX -> string to display
  4650. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEBUT" (see AX=005Eh);
  4651.       "FG_PRINT" did not exist yet
  4652.     The string is displayed in the current color, and the graphics cursor
  4653.       is updated to be just to the right of the last displayed character
  4654.     This function is ignored in text modes
  4655. SeeAlso: AX=000Ch,AX=002Dh,AX=0052h
  4656. --------V-62007D-----------------------------
  4657. INT 62 u - FGDRIVER v3.03 - "FG_PUTBLOCK" - RESTORE RECTANGLE OF DISPLAY
  4658.     AX = 007Dh
  4659.     ES:BX -> buffer containing previously-saved image
  4660.     CX = left edge
  4661.     DX = right edge
  4662.     SI = top edge
  4663.     DI = bottom edge
  4664. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPOS" (see AX=0064h);
  4665.       "FG_PUTBLOCK" did not exist yet
  4666.     In text modes, coordinates are character positions; in graphics modes,
  4667.       they are defined in screen space, and the left and right edges are
  4668.       adjusted to a byte boundary if necessary
  4669. SeeAlso: AX=0031h,AX=007Eh
  4670. --------V-62007E-----------------------------
  4671. INT 62 u - FGDRIVER v3.03 - "FG_PUTIMAGE" - DISPLAY MODE-SPECIFIC BITMAP IMAGE
  4672.     AX = 007Eh
  4673.     ES:BX -> buffer containing mode-specific bitmap
  4674.     CX = width in bytes
  4675.     DX = height in pixel rows
  4676. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSECUR" (see AX=005Fh);
  4677.       "FG_PUTIMAGE" did not exist yet
  4678.     The bitmap is displayed with its lower left corner at the graphics
  4679.       cursor position; color 0 is NOT treated as transparent
  4680. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=007Dh
  4681. --------V-62007F-----------------------------
  4682. INT 62 u - FGDRIVER v3.03 - "FG_QUIET" - STOP CONTINUOUS SYNCHRONOUS SOUND
  4683.     AX = 007Fh
  4684. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEPTR" (see AX=0065h);
  4685.       "FG_QUIET" was AX=0090h
  4686.     This call has no effect if there is no continuous sound playing
  4687. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00ABh
  4688. --------V-620080-----------------------------
  4689. INT 62 u - FGDRIVER v3.03 - "FG_RECT" - DRAW UNFILLED RECTANGLE IN SCREEN SPACE
  4690.     AX = 0080h
  4691.     BX = left edge column
  4692.     CX = right edge column
  4693.     DX = top edge row
  4694.     SI = bottom edge row
  4695. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSELIM" (see AX=0062h);
  4696.       "FG_RECT" was AX=002Ah
  4697. SeeAlso: AX=0006h,AX=0011h,AX=0021h,AX=0031h
  4698. --------V-620081-----------------------------
  4699. INT 62 u - FGDRIVER v3.03 - "FG_RESET" - ERASE SCREEN AND RESTORE SCREEN ATTR
  4700.     AX = 0081h
  4701. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSEMOV" (see AX=0063h);
  4702.       "FG_RESET" was AX=0006h
  4703.     This call is ignored in graphics modes
  4704.     The screen attributes are only restored if ANSI.SYS is loaded
  4705. SeeAlso: AX=0026h,AX=0093h
  4706. --------V-620082-----------------------------
  4707. INT 62 u - FGDRIVER v3.03 - "FG_RESIZE" - SET GRAPHICS MODE VIDEO PAGE SIZE
  4708.     AX = 0082h
  4709.     BX = new page width in pixels
  4710.     CX = new page height in pixels
  4711. Notes:    For FGDRIVER v1.10, this function was "FG_MOUSESPD" (see AX=0066h);
  4712.       "FG_RESIZE" was AX=0045h
  4713.     The visible page must be set to 0000h before making this call
  4714.     The mouse, joysticks, expanded memory, and extended memory must be
  4715.       reinitialized after this call
  4716. SeeAlso: AX=006Dh,AX=008Fh
  4717. --------V-620083-----------------------------
  4718. INT 62 u - FGDRIVER v3.03 - "FG_RESTORE" - COPY REGION FROM HIDDEN TO VIS PAGE
  4719.     AX = 0083h
  4720.     BX = left edge column
  4721.     CX = right edge column
  4722.     DX = top edge row
  4723.     SI = bottom edge row
  4724. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESTORE" was AX=005Bh
  4725.     The left and right edges are adjusted to byte boundaries if necessary
  4726. SeeAlso: AX=0087h,AX=00A6h
  4727. --------V-620084-----------------------------
  4728. INT 62 u - FGDRIVER v3.03 - "FG_RESUME" - RESTART ASYNCHRONOUS SOUND
  4729.     AX = 0084h
  4730. Notes:    For FGDRIVER v1.10, this function was unused; "FG_RESUME" was AX=0092h
  4731. SeeAlso: AX=009Eh,AX=00A0h
  4732. --------V-620085-----------------------------
  4733. INT 62 u - FGDRIVER v3.03 - "FG_REVIMAGE" - DISPLAY REVERSED IMAGE (BITMAP)
  4734.     AX = 0085h
  4735.     ES:BX -> mode-specific bitmap
  4736.     CX = width of bitmap in bytes
  4737.     DX = height of bitmap in pixel rows
  4738. Notes:    For FGDRIVER v1.10, this function was unused;"FG_REVIMAGE" was AX=004Bh
  4739.     This call is ignored in text modes
  4740.     The image is drawn with its lower left corner at the current graphics
  4741.       cursor position
  4742. SeeAlso: AX=0010h,AX=0022h,AX=002Ch,AX=0038h,AX=0086h,AX=008Ch,AX=009Ah
  4743. --------V-620086-----------------------------
  4744. INT 62 u - FGDRIVER v3.03 - "FG_REVMASK" - DISPLAY REVERSED IMAGE (MASKING MAP)
  4745.     AX = 0086h
  4746.     ES:BX -> array containing image stored as a masking map (see #2098)
  4747.     CX = number of pixel runs in masking map
  4748.     DX = width of masking map in pixels
  4749. Notes:    For FGDRIVER v1.10, this function was unused; "FG_REVMASK" was AX=0053h
  4750.     This call is ignored in text modes and in native EGA and VGA graphics
  4751.       modes
  4752.     The image is drawn with its lower left corner at the current graphics
  4753.       cursor position
  4754. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0085h,AX=008Ch,AX=00A5h
  4755. --------V-620087-----------------------------
  4756. INT 62 u - FGDRIVER v3.03 - "FG_SAVE" - COPY REGION FROM VISIBLE TO HIDDEN PAGE
  4757.     AX = 0087h
  4758.     BX = left edge column
  4759.     CX = right edge column
  4760.     DX = top edge row
  4761.     SI = bottom edge row
  4762. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SAVE" was AX=005Ah
  4763.     The left and right edges are adjusted to byte boundaries if necessary
  4764. SeeAlso: AX=0083h,AX=00A6h
  4765. --------V-620088-----------------------------
  4766. INT 62 u - FGDRIVER v3.03 - "FG_SCRLOCK" - GET STATE OF SCROLL LOCK KEY
  4767.     AX = 0088h
  4768. Return: AX = ScrollLock state (0000h off, 0001h on)
  4769. Program: FGDRIVER is the external video driver for the shareware
  4770.       Fastgraph/Light by Ted Gruber Software
  4771. Note:    For FGDRIVER v1.10, this function was "FG_SOUND" (see AX=009Dh);
  4772.       "FG_SCRLOCK" was AX=0074h
  4773. SeeAlso: AX=000Ah,AX=006Ch,AX=008Bh,AX=0094h
  4774. --------V-620089-----------------------------
  4775. INT 62 u - FGDRIVER v3.03 - "FG_SCROLL" - VERTICALLY SCROLL SCREEN REGION
  4776.     AX = 0089h
  4777.     BX = left edge column
  4778.     CX = right edge column
  4779.     DX = top edge row
  4780.     SI = bottom edge row
  4781.     DI = number of pixels by which to scroll (positive scrolls up,
  4782.           negative scrolls down)
  4783.     ES = type of scroll
  4784.         0000h circular (rows scrolled off are copied to vacated rows)
  4785.         else vacated rows are filled with the current color
  4786. Notes:    For FGDRIVER v1.10, this function was "FG_SOUNDS" (see AX=009Eh);
  4787.       "FG_SCROLL" was AX=0067h
  4788.     In graphics modes, the left and right edges are adjusted to byte
  4789.       boundaries if necessary
  4790.     Circular scrolling uses part of the hidden page as a workspace
  4791. SeeAlso: AX=0071h,AX=0095h
  4792. --------V-62008A-----------------------------
  4793. INT 62 u - FGDRIVER v3.03 - "FG_SETATTR" - SET TEXT-MODE CHARACTER ATTRIBUTE
  4794.     AX = 008Ah
  4795.     BX = foreground
  4796.     CX = background
  4797.     DX = blink (0000h nonblinking, 0001h blink)
  4798. Notes:    For FGDRIVER v1.10, this function was "FG_VOICE" (see AX=00AAh);
  4799.       "FG_SETATTR" was AX=0019h
  4800.     This call is ignored in graphics modes
  4801. SeeAlso: AX=000Bh,,AX=0030h,AX=0034h
  4802. --------V-62008B-----------------------------
  4803. INT 62 u - FGDRIVER v3.03 - "FG_SETCAPS" - SET STATE OF CAPSLOCK KEY
  4804.     AX = 008Bh
  4805.     BX = new state (0000h off, 0001h on)
  4806. Note:    For FGDRIVER v1.10, this function was "FG_VOICES" (see AX=00ABh);
  4807.       "FG_SETCAPS" was AX=0071h
  4808. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=0094h
  4809. --------V-62008C-----------------------------
  4810. INT 62 u - FGDRIVER v3.03 - "FG_SETCLIP" - SET CLIPPING REGION
  4811.     AX = 008Ch
  4812.     BX = left edge of clipping region
  4813.     CX = right edge of clipping region
  4814.     DX = top edge of clipping region
  4815.     SI = bottom edge of clipping region
  4816. Note:    For FGDRIVER v1.10, this function was "FG_MUSIC" (see AX=006Ah);
  4817.       "FG_SETCLIP" was AX=0029h
  4818. SeeAlso: AX=000Fh,AX=001Dh,AX=002Ah,AX=0086h,AX=00A5h
  4819. --------V-62008D-----------------------------
  4820. INT 62 u - FGDRIVER v3.03 - "FG_SETCOLOR" - SET CURRENT COLOR
  4821.     AX = 008Dh
  4822.     BX = new color index (or text attribute in text modes)
  4823. Note:    For FGDRIVER v1.10, this function was "FG_MUSICB" (see AX=006Bh);
  4824.       "FG_SETCOLOR" was AX=001Ah
  4825. SeeAlso: AX=0016h,AX=0034h,AX=0039h
  4826. --------V-62008E-----------------------------
  4827. INT 62 u - FGDRIVER v3.03 - "FG_SETDACS" - SET VIDEO DAC CONTENTS
  4828.     AX = 008Eh
  4829.     CX = number of DAC registers to set (0001h to 0100h)
  4830.     DX = starting DAC register number (0000h to 00FFh)
  4831.     ES:BX -> buffer containing DAC red/green/blue triples
  4832. Notes:    For FGDRIVER v1.10, this function was "FG_HUSH" (see AX=0048h);
  4833.       "FG_SETDACS" was AX=00A5h
  4834.     The register number wraps back to zero after reaching FFh
  4835.     This call has no effect in text modes or graphics modes below 11h
  4836. SeeAlso: AX=0035h,AX=0042h,AX=006Fh,INT 10/AX=1012h
  4837. --------V-62008F-----------------------------
  4838. INT 62 u - FGDRIVER v3.03 - "FG_SETENTRY" - SET TYPE AND ADDRESS OF VIDEO PAGE
  4839.     AX = 008Fh
  4840.     BX = page number (00h-3Fh)
  4841.     CX = page address
  4842.     DX = page type (see #2100 at AX=0036h)
  4843. Notes:    For FGDRIVER v1.10, this function was "FG_HUSHNEXT" (see AX=0049h);
  4844.       "FG_SETENTRY" did not exist yet
  4845. SeeAlso: AX=002Eh,AX=0036h,AX=0093h
  4846. --------V-620090-----------------------------
  4847. INT 62 u - FGDRIVER v3.03 - "FG_SETFUNC" - SET LOGICAL OPERATION FOR VIDEO OPS
  4848.     AX = 0090h
  4849.     BX = operation
  4850.         0000h replacement
  4851.         0001h AND
  4852.         0002h OR
  4853.         0003h XOR
  4854. Notes:    For FGDRIVER v1.10, this function was "FG_QUIET" (see AX=007Fh);
  4855.       "FG_SETFUNC" was AX=009Ch
  4856.     This function is only available in native EGA/VGA graphics modes
  4857.       (0Dh to 12h)
  4858. SeeAlso: AX=001Ch,AX=0076h
  4859. --------V-620091-----------------------------
  4860. INT 62 u - FGDRIVER v3.03 - "FG_SETHPAGE" - SET HIDDEN VIDEO PAGE
  4861.     AX = 0091h
  4862.     BX = new hidden page (0000h to 003Fh)
  4863. Notes:    For FGDRIVER v1.10, this function was "FG_PLAYING" (see AX=0075h);
  4864.       "FG_SETHPAGE" was AX=0041h
  4865.     The specified page must be a physical page or a virtual page
  4866. SeeAlso: AX=0037h,AX=0095h,AX=0098h
  4867. --------V-620092-----------------------------
  4868. INT 62 u - FGDRIVER v3.03 - "FG_SETLINES" - SET TEXT ROWS ON SCREEN
  4869.     AX = 0092h
  4870.     BX = new screen size (25, 43, 50)
  4871. Note:    For FGDRIVER v1.10, this function was "FG_RESUME" (see AX=0084h);
  4872.       "FG_SETLINES" was AX=0011h
  4873. SeeAlso: AX=003Bh
  4874. --------V-620093-----------------------------
  4875. INT 62 u - FGDRIVER v3.03 - "FG_SETMODE" - SELECT VIDEO MODE AND INITIALIZE
  4876.     AX = 0093h
  4877.     BX = new video mode or FFFFh for current mode (see #2111)
  4878.     ES:DX -> WORD ???
  4879. Notes:    For FGDRIVER v1.10, this function was "FG_SUSPEND" (see AX=00A0h);
  4880.       "FG_SETMODE" was AX=0001h
  4881.     This call resets the active video page to page 0000h, the clipping
  4882.       region to the entire screen, text rows to 25, etc.
  4883. SeeAlso: AX=003Fh,INT 10/AH=00h
  4884.  
  4885. (Table 2111)
  4886. Values for FGDRIVER video mode:
  4887.  00h-07h standard BIOS modes
  4888.  09h    PCjr/Tandy1000 320x200x16
  4889.  0Bh    Hercules graphics 720x348
  4890.  0Ch    Hercules graphics 320x200
  4891.  0Dh-13h standard BIOS modes
  4892.  14h    VGA graphics 320x200x256
  4893.  15h    VGA graphics 320x400x256
  4894.  16h    VGA graphics 320x240x256
  4895.  17h    VGA graphics 320x480x256
  4896.  18h    SVGA graphics 640x400x256
  4897.  19h    SVGA graphics 640x480x256
  4898.  1Ah    SVGA graphics 800x600x256
  4899.  1Bh    SVGA graphics 1024x768x256
  4900.  1Ch    SVGA graphics 800x600x16
  4901.  1Dh    SVGA graphics 1024x768x16
  4902. --------V-620094-----------------------------
  4903. INT 62 u - FGDRIVER v3.03 - "FG_SETNUM" - SET STATE OF NUMLOCK KEY
  4904.     AX = 0094h
  4905.     BX = new state (0000h off, 0001h on)
  4906. Note:    For FGDRIVER v1.10, this function was unused; "FG_SETNUM" was AX=0073h
  4907. SeeAlso: AX=000Ah,AX=006Ch,AX=0088h,AX=008Bh
  4908. --------V-620095-----------------------------
  4909. INT 62 u - FGDRIVER v3.03 - "FG_SETPAGE" - SET ACTIVE VIDEO PAGE
  4910.     AX = 0095h
  4911.     BX = new video page (0000h to 003Fh)
  4912. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SETPAGE" was AX=003Dh
  4913.     The specified page must be a physical or virtual page
  4914. SeeAlso: AX=002Fh,AX=0036h,AX=0037h,AX=0043h,AX=0071h
  4915. --------V-620096-----------------------------
  4916. INT 62 u - FGDRIVER v3.03 - "FG_SETRGB" - SET VIDEO DAC REGISTER CONTENTS
  4917.     AX = 0096h
  4918.     BX = palette or DAC register number
  4919.     CX = red color component
  4920.     DX = green component
  4921.     SI = blue component
  4922. Notes:    For FGDRIVER v1.10, this function was "FG_WAITFOR" (see AX=00ACh);
  4923.       "FG_SETRGB" was AX=001Bh
  4924.     The register number may be negative for Tandy, PCjr, and 200-line
  4925.       EGA graphics modes to specify an intense color
  4926.     This call has no effect in text, CGA graphics, and Hercules graphics
  4927.       modes
  4928. SeeAlso: AX=0042h
  4929. --------V-620097-----------------------------
  4930. INT 62 u - FGDRIVER v3.03 - UNUSED
  4931.     AX = 0097h
  4932. Return: AX = 0000h
  4933. Note:    For FGDRIVER v1.10, this function was "FG_STALL" (see AX=009Fh)
  4934. --------V-620098-----------------------------
  4935. INT 62 u - FGDRIVER v3.03 - "FG_SETVPAGE" - SET VISIBLE VIDEO PAGE
  4936.     AX = 0098h
  4937.     BX = new video page (0000h to 003Fh)
  4938. Notes:    For FGDRIVER v1.10, this function was "FG_MEASURE" (see AX=005Bh);
  4939.       "FG_SETVPAGE" was AX=003Fh
  4940.     The specified page must be a physical or virtual page
  4941. SeeAlso: AX=0037h,AX=0091h,AX=0095h
  4942. --------V-620099-----------------------------
  4943. INT 62 u - FGDRIVER v3.03 - UNUSED
  4944.     AX = 0099h
  4945. Return: AX destroyed
  4946. Note:    For FGDRIVER v1.10, this function was "FG_GETCLOCK" (see AX=0033h)
  4947. --------V-62009A-----------------------------
  4948. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPCX" - DISPLAY IMAGE FROM PCX FILE
  4949.     AX = 009Ah
  4950.     ES:BX -> ASCIZ filename of PCX image
  4951.     CX = flags (see #2112)
  4952. Return: AX = status
  4953.         0000h success
  4954.         0001h file not found
  4955.         0002h not a PCX file
  4956. Notes:    For FGDRIVER v1.10, this function was unused; "FG_SHOWPCX" did not
  4957.       exist yet
  4958.     This function is ignored in text modes and Hercules low-res graphics
  4959. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=0060h"1.10",AX=009Bh,AX=009Ch
  4960.  
  4961. Bitfields for FGDRIVER flags:
  4962. Bit(s)    Description    (Table 2112)
  4963.  0    use current palette rather than PCX file's palette
  4964.  1    display image at cursor position instead of position in PCX header
  4965.  2-15    reserved
  4966. --------V-62009B-----------------------------
  4967. INT 62 u - FGDRIVER v3.03 - "FG_SHOWPPR" - DISPLAY IMAGE FROM PPR FILE
  4968.     AX = 009Bh
  4969.     ES:BX -> ASCIZ filename of packed pixel run image
  4970.     CX = width in pixels (nonzero)
  4971. Return: AX = status
  4972.         0000h successful
  4973.         0001h file not found
  4974. Notes:    For FGDRIVER v1.10, this function was "FG_MEMAVAIL" (see AX=005Ch);
  4975.       "FG_SHOWPPR" did not exist yet
  4976.     The image is displayed with its lower left corner at the current
  4977.       graphics cursor position
  4978.     This function is ignored in text modes and 256-color graphics modes
  4979. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Ch
  4980. --------V-62009C-----------------------------
  4981. INT 62 u - FGDRIVER v3.03 - "FG_SHOWSPR" - DISPLAY IMAGE FROM SPR FILE
  4982.     AX = 009Ch
  4983.     ES:BX -> ASCIZ filename of standard pixel run image
  4984.     CX = width in pixels (nonzero)
  4985. Return: AX = status
  4986.         0000h successful
  4987.         0001h file not found
  4988. Notes:    For FGDRIVER v1.10, this function was "FG_SETFUNC" (see AX=0090h);
  4989.       "FG_SHOWSPR" did not exist yet
  4990.     The image is displayed with its lower left corner at the current
  4991.       graphics cursor position
  4992.     This function is ignored in text modes
  4993. SeeAlso: AX=004Ah,AX=0057h,AX=0058h,AX=0059h,AX=009Ah,AX=009Bh
  4994. --------V-62009D-----------------------------
  4995. INT 62 u - FGDRIVER v3.03 - "FG_SOUND" - MAKE SOUND FOR SPECIFIED DURATION
  4996.     AX = 009Dh
  4997.     BX = frequency in Hertz (18-32767)
  4998.     CX = duration in clock ticks (0000h or negative for continuous sound)
  4999. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCCMS" (see AX=0001h);
  5000.       "FG_SOUND" was AX=0088h
  5001.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  5002.       AX=008Dh) is already in progress
  5003. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  5004. --------V-62009E-----------------------------
  5005. INT 62 u - FGDRIVER v3.03 - "FG_SOUNDS" - PLAY SOUNDS IN BACKGROUND
  5006.     AX = 009Eh
  5007.     CX = number of times to cycle through sound list
  5008.     ES:BX -> sounds array (see #2113)
  5009. Notes:    For FGDRIVER v1.10, this function was "FG_ALLOCEMS" (see AX=0002h);
  5010.       "FG_SOUNDS" was AX=0089h
  5011.     This call is ignored if asynchronous sound (AX=0089h,AX=008Bh,
  5012.       AX=008Dh) is already in progress
  5013. SeeAlso: AX=0048h,AX=006Bh,AX=009Dh,AX=00A0h,AX=00ABh
  5014.  
  5015. Format of FGDRIVER sounds array element:
  5016. Offset    Size    Description    (Table 2113)
  5017.  00h    WORD    frequency of sound in Hertz (0000h ends array)
  5018.  02h    WORD    duration of sound in clock ticks
  5019. --------V-62009F-----------------------------
  5020. INT 62 u - FGDRIVER v3.03 - "FG_STALL" - PAUSE FOR SPECIFIED DURATION
  5021.     AX = 009Fh
  5022.     BX = duration in processor-dependent delay units (see AX=005Bh)
  5023. Return: after delay elapses
  5024. Note:    For FGDRIVER v1.10, this function was "FG_ALLOCXMS" (see AX=0003h);
  5025.       "FG_STALL" was AX=0097h
  5026. SeeAlso: AX=005Bh,INT 2F/AX=1224h
  5027. --------V-6200A0-----------------------------
  5028. INT 62 u - FGDRIVER v3.03 - "FG_SUSPEND" - TEMPORARILY STOP ASYNCHRONOUS SOUND
  5029.     AX = 00A0h
  5030. Notes:    For FGDRIVER v1.10, this function was "FG_INITEMS" (see AX=004Ch);
  5031.       "FG_SUSPEND" was AX=0093h
  5032.     This call has no effect if there is no asynchronous sound in progress
  5033.     The program must not exit while sound is suspended
  5034. SeeAlso: AX=0048h,AX=006Ah,AX=009Eh,AX=00A0h,AX=00AAh
  5035. --------V-6200A1-----------------------------
  5036. INT 62 u - FGDRIVER v3.03 - "FG_SVGAINIT" - INITIALIZE FASTGRAPH SVGA KERNEL
  5037.     AX = 00A1h
  5038.     BX = method (see #2114)
  5039. Return: AX = status
  5040.         0000h no VESA BIOS or supported SVGA chipset
  5041.         0001h using VESA BIOS
  5042.         0002h-0016h specific chipset being used (same as "method" below)
  5043. Notes:    For FGDRIVER v1.10, this function was "FG_INITXMS" (see AX=004Eh);
  5044.       "FG_SVGAINIT" did not exist yet
  5045.     This function must be called before attempting to set SVGA graphics
  5046.       modes (18h to 1Dh) or using "FG_BESTMODE", "FG_TESTMODE", or
  5047.       "FG_MEMORY"
  5048. SeeAlso: AX=0023h,AX=00A2h,AX=00A3h
  5049.  
  5050. (Table 2114)
  5051. Values for FGDRIVER SVGA method:
  5052.  0000h    autodetect, give chipset-specific code priority over VESA
  5053.  0001h    autodetect, give VESA priority over chipset-specific code
  5054.  0002h    Ahead type "A"
  5055.  0003h    Ahead type "B"
  5056.  0004h    ATI 18800
  5057.  0005h    ATI 18800-1
  5058.  0006h    ATI 28800
  5059.  0007h    Chips & Technologies 82c451/455/456
  5060.  0008h    C&T 82c452
  5061.  0009h    C&T 82c453
  5062.  000Ah    Genoa 6000 series
  5063.  000Bh    Oak OTI-067
  5064.  000Ch    Paradise PVGA1a
  5065.  000Dh    Paradise WD90C00/WD90C10
  5066.  000Eh    Paradise WD90C11/WD90C30/WD90C31
  5067.  000Fh    Trident 8800
  5068.  0010h    Trident 8900
  5069.  0011h    Tseng ET3000
  5070.  0012h    Tseng ET4000
  5071.  0013h    Video7
  5072.  0014h    Cirrus Logic 5400 series
  5073.  0015h    S3
  5074.  0016h    Trident 8900B/8900C/9000
  5075. --------V-6200A2-----------------------------
  5076. INT 62 u - FGDRIVER v3.03 - "FG_SVGASTAT" - GET SVGA CHIPSET INFORMATION
  5077.     AX = 00A2h
  5078. Return: AX = chipset information (see #2115)
  5079. Note:    For FGDRIVER v1.10, this function was "FG_BOX" (see AX=0006h);
  5080.       "FG_SVGASTAT" did not exist yet
  5081. SeeAlso: AX=0023h,AX=00A1h,AX=00A3h
  5082.  
  5083. Bitfields for FGDRIVER chipset information:
  5084. Bit(s)    Description    (Table 2115)
  5085.  0    SVGA kernel initialized
  5086.  1    VESA support enabled
  5087.  2    extended video pages available in modes 13-23
  5088.  3    SVGA chipset has separate read and write banks
  5089.  4-15    reserved (0)
  5090. --------V-6200A3-----------------------------
  5091. INT 62 u - FGDRIVER v3.03 - "FG_SVGAVER" - GET FASTGRAPH SVGA KERNEL VERSION
  5092.     AX = 00A3h
  5093.     ES:BX -> variable pointer record (see #2116)
  5094. Note:    For FGDRIVER v1.10, this function was "FG_BOXDEPTH" (see AX=0007h);
  5095.       "FG_SVGAVER" did not exist yet
  5096. SeeAlso: AX=00A1h,AX=00A2h
  5097.  
  5098. Format of FGDRIVER variable pointer record:
  5099. Offset    Size    Description    (Table 2116)
  5100.  00h    WORD    segment of WORD buffer for major version
  5101.  02h    WORD    offset of WORD buffer for major version
  5102.  04h    WORD    segment of WORD buffer for minor version (hundredths)
  5103.  06h    WORD    offset of WORD buffer for minor version
  5104. --------V-6200A4-----------------------------
  5105. INT 62 u - FGDRIVER v3.03 - "FG_TCDEFINE" - DEFINE TRANSPARENCY OF COLOR INDEX
  5106.     AX = 00A4h
  5107.     BX = color index
  5108.     CX = transparency (00h opaque, other transparent)
  5109. Notes:    For FGDRIVER v1.10, this function was "FG_GETDACS" (see AX=0035h);
  5110.       "FG_TCDEFINE" did not exist yet
  5111.     This function is ignored in text modes
  5112. SeeAlso: AX=00A5h,AX=00A6h
  5113. --------V-6200A5-----------------------------
  5114. INT 62 u - FGDRIVER v3.03 - "FG_TCMASK" - SET TRANSPARENT COLORS
  5115.     AX = 00A5h
  5116.     BX = colors to consider transparent (bit 0 = color 0, etc)
  5117. Notes:    For FGDRIVER v1.10, this function was "FG_SETDACS" (see AX=008Eh);
  5118.       "FG_TCMASK" was AX=005Eh
  5119.     This call is ignored in text modes
  5120.     The specified colors are considered transparent by "FG_TCXFER"
  5121. SeeAlso: AX=00A4h,AX=00A6h
  5122. --------V-6200A6-----------------------------
  5123. INT 62 u - FGDRIVER v3.03 - "FG_TCXFER" - COPY REGION EXCLUDING TRANSPARENT
  5124.     AX = 00A6h
  5125.     CX = source video page
  5126.     DX = destination video page
  5127.     ES:BX -> copy record (see #2117)
  5128. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TCXFER" was AX=005Dh
  5129.     Pixels which are in any of the colors defined as transparent with
  5130.       "FG_TCMASK" (see AX=00A5h) are left unchanged in the destination
  5131.       region
  5132.     The source and destination regions must not overlap if they are located
  5133.       on the same page
  5134.     This call is ignored in text modes
  5135. SeeAlso: AX=00A4h,AX=00A5h,AX=00A9h
  5136. --------V-6200A7-----------------------------
  5137. INT 62 u - FGDRIVER v3.03 - "FG_TESTMODE" - CHECK IF VIDEO MODE AVAILABLE
  5138.     AX = 00A7h
  5139.     BX = desired video mode (00h-17h, also 18h-1Dh after "FG_SVGAINIT")
  5140.     CX = required number of video pages (ignore memory size if <= 0)
  5141. Return: AX = status
  5142.         0000h mode not available with requested number of pages
  5143.         0001h mode is available
  5144. Note:    For FGDRIVER v1.10, this function was unused;"FG_TESTMODE" was AX=0002h
  5145. SeeAlso: AX=0005h,AX=0093h
  5146. --------V-6200A8-----------------------------
  5147. INT 62 u - FGDRIVER v3.03 - "FG_TEXT" - DISPLAY STRING OF CHARACTERS
  5148.     AX = 00A8h
  5149.     CX = length of string
  5150.     ES:BX -> string
  5151. Notes:    For FGDRIVER v1.10, this function was unused; "FG_TEXT" was AX=0032h
  5152.     The string is displayed starting at the text cursor position using the
  5153.       current text attribute (text modes) or color index (graphics modes)
  5154.     The text cursor position is updated after this call
  5155. SeeAlso: AX=000Ch,AX=007Ch
  5156. --------V-6200A9-----------------------------
  5157. INT 62 u - FGDRIVER v3.03 - "FG_TRANSFER" - COPY REGION
  5158.     AX = 00A9h
  5159.     CX = source video page
  5160.     DX = destination video page
  5161.     ES:BX -> copy record (see #2117)
  5162. Notes:    For FGDRIVER v1.10, this function was unused;"FG_TRANSFER" was AX=005Ch
  5163.     The source and destination regions must not overlap if they are located
  5164.       on the same page
  5165. SeeAlso: AX=0083h,AX=0087h,AX=0089h,AX=00A6h
  5166.  
  5167. Format of FGDRIVER copy record:
  5168. Offset    Size    Description    (Table 2117)
  5169.  00h    WORD    left edge column of source region
  5170.  02h    WORD    right edge column of source region
  5171.  04h    WORD    top edge row of source region
  5172.  06h    WORD    bottom edge row of source region
  5173.  08h    WORD    left edge of destination
  5174.  0Ah    WORD    bottom edge of destination
  5175. --------V-6200AA-----------------------------
  5176. INT 62 u - FGDRIVER v3.03 - "FG_VOICE" - START SOUND
  5177.     AX = 00AAh
  5178.     BX = channel on TI sound chip
  5179.         1-3 = channels 1-3, 4 = channel 4 with periodic noise,
  5180.         5 = channel 4 with white noise
  5181.     CX = frequency in Hz (18-32767 for channels 1-3; 0=512 Hz, 1=1024 Hz,
  5182.           2=2048 Hz for channels 4 and 5)
  5183.     DX = volume
  5184.     SI = duration in clock ticks (continuous if <= 0)
  5185. Program: FGDRIVER is the external video driver for the shareware
  5186.       Fastgraph/Light by Ted Gruber Software
  5187. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICE" was AX=008Ah
  5188.     This function is only available on the PCjr and Tandy 1000 machines
  5189. SeeAlso: AX=006Ah,AX=009Dh,AX=00ABh
  5190. --------V-6200AB-----------------------------
  5191. INT 62 u - FGDRIVER v3.03 - "FG_VOICES" - PLAY SOUNDS IN BACKGROUND
  5192.     AX = 00ABh
  5193.     ES:BX -> tone array (see #2118)
  5194.     CX = number of times to repeat tone array
  5195. Notes:    For FGDRIVER v1.10, this function was unused; "FG_VOICES" was AX=008Bh
  5196.     This function is only available on the PCjr and Tandy 1000 machines
  5197. SeeAlso: AX=0048h,AX=006Bh,AX=009Eh,AX=00AAh
  5198.  
  5199. Format of FGDRIVER tone array element:
  5200. Offset    Size    Description    (Table 2118)
  5201.  00h    WORD    channel number (0000h terminates array)
  5202.  02h    WORD    frequency
  5203.  04h    WORD    volume
  5204.  06h    WORD    duration in 1/72.8 seconds
  5205. --------V-6200AC-----------------------------
  5206. INT 62 u - FGDRIVER v3.03 - "FG_WAITFOR" - DELAY FOR SPECIFIED DURATION
  5207.     AX = 00ACh
  5208.     BX = duration in clock ticks
  5209. Return: after delay elapses
  5210. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITFOR" was AX=0096h
  5211. SeeAlso: AX=009Fh,INT 1A/AX=FF01h
  5212. --------V-6200AD-----------------------------
  5213. INT 62 u - FGDRIVER v3.03 - "FG_WAITKEY" - FLUSH KEYBOARD BUFFER AND AWAIT KEY
  5214.     AX = 00ADh
  5215. Return: after next key pressed
  5216. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITKEY" was AX=006Dh
  5217. SeeAlso: AX=000Ah,AX=003Ah,AX=0051h,AX=0054h,INT 16/AH=00h
  5218. --------V-6200AE-----------------------------
  5219. INT 62 u - FGDRIVER v3.03 - "FG_WAITVR" - ENABLE/DISABLE VERTICAL RETRACE WAIT
  5220.     AX = 00AEh
  5221.     BX = new state (0000h disabled, 0001h enabled)
  5222. Note:    For FGDRIVER v1.10, this function was unused; "FG_WAITVR" did not
  5223.       exist yet
  5224. --------V-6200AF-----------------------------
  5225. INT 62 u - FGDRIVER v3.03 - "FG_WHERE" - GET CURRENT CURSOR POSITION
  5226.     AX = 00AFh
  5227.     ES:BX -> variable pointers (see #2119)
  5228. Return: indicated variables filled with cursor row and column for active
  5229.       display
  5230. Note:    For FGDRIVER v1.10, this function was unused; "FG_WHERE" was AX=0034h
  5231. SeeAlso: AX=0045h,AX=0047h,AX=0055h,AX=0068h
  5232.  
  5233. Format of FGDRIVER variable pointers:
  5234. Offset    Size    Description    (Table 2119)
  5235.  00h    WORD    segment of WORD buffer for cursor row
  5236.  02h    WORD    offset of WORD buffer for cursor row
  5237.  04h    WORD    segment WORD buffer for cursor column
  5238.  06h    WORD    offset WORD buffer for cursor column
  5239. --------V-6200B0-----------------------------
  5240. INT 62 u - FGDRIVER v3.03 - "FG_XALPHA" - CONVERT SCREEN COLUMN TO CHAR COLUMN
  5241.     AX = 00B0h
  5242.     BX = screen space column
  5243. Return: AX = character space column containing specified coordinate
  5244. Note:    For FGDRIVER v1.10, this function was unused; "FG_XALPHA" was AX=000Ch
  5245. SeeAlso: AX=00B1h,AX=00B2h
  5246. --------V-6200B1-----------------------------
  5247. INT 62 u - FGDRIVER v3.03 - "FG_XCONVERT" - CONVERT CHAR COLUMN TO SCREEN COL
  5248.     AX = 00B1h
  5249.     BX = character space column
  5250. Return: AX = screen space column of leftmost pixel in specified character col
  5251. Note:    For FGDRIVER v1.10, this function was unused;"FG_XCONVERT" was AX=000Eh
  5252. SeeAlso: AX=00B0h,AX=00B3h
  5253. --------V-6200B2-----------------------------
  5254. INT 62 u - FGDRIVER v3.03 - "FG_YALPHA" - CONVERT SCREEN ROW TO CHARACTER ROW
  5255.     AX = 00B2h
  5256.     BX = screen space row
  5257. Return: AX = character space row containing specified coordinate
  5258. Note:    For FGDRIVER v1.10, this function was unused; "FG_YALPHA" was AX=000Dh
  5259. SeeAlso: AX=00B0h,AX=00B3h
  5260. --------V-6200B3-----------------------------
  5261. INT 62 u - FGDRIVER v3.03 - "FG_YCONVERT" - CONVERT CHARACTER ROW TO SCREEN ROW
  5262.     AX = 00B3h
  5263.     BX = character space row
  5264. Return: AX = screen space row of topmost pixel in specified character row
  5265. Program: FGDRIVER is the external video driver for the shareware
  5266.       Fastgraph/Light by Ted Gruber Software
  5267. Note:    For FGDRIVER v1.10, this function was unused;"FG_YCONVERT" was AX=000Fh
  5268. SeeAlso: AX=00B1h,AX=00B2h
  5269. --------T-6201-------------------------------
  5270. INT 62 - Cswitch - GIVE UP REST OF TIME-SLICE
  5271.     AH = 01h
  5272. Program: Cswitch is a set of multitasking functions by Herb Rose
  5273. SeeAlso: AH=05h"Cswitch",AH=06h"Cswitch",INT 15/AX=1000h,INT 2F/AX=1680h
  5274. --------N-6201-------------------------------
  5275. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  5276.     AH = 01h
  5277. Return: CF clear if successful
  5278.     CF set on error
  5279.         AL = error code
  5280. Range:    INT 4C to INT FB, selected by configuration
  5281. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5282. --------T-6202-------------------------------
  5283. INT 62 - Cswitch - WAIT FOR SEMAPHORE
  5284.     AH = 02h
  5285.     DX = semaphore number (0-63)
  5286. Return: AX = FFFFh bad semaphore number
  5287.          else  success
  5288. SeeAlso: AH=03h"Cswitch",AH=04h"Cswitch"
  5289. --------N-6202-------------------------------
  5290. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - INITIALIZE
  5291.     AH = 02h
  5292. Return: CF clear if successful
  5293.     CF set on error
  5294.         AL = error code
  5295. SeeAlso: AH=00h"ETHDEV",AH=03h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  5296. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  5297. --------T-6203-------------------------------
  5298. INT 62 - Cswitch - CHECK SEMAPHORE
  5299.     AH = 03h
  5300.     DX = semaphore number (0-63)
  5301. Return: AX = status
  5302.         FFFFh not owned
  5303.         else  owned
  5304. SeeAlso: AH=02h,AH=04h
  5305. --------N-6203-------------------------------
  5306. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET REAL IP ADDRESS
  5307.     AH = 03h
  5308.     DS:SI -> DWORD buffer for IP address
  5309. Return: CF clear if successful
  5310.     CF set on error
  5311.         AL = error code
  5312. Range:    INT 4C to INT FB, selected by configuration
  5313. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5314.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5315.       consecutive interrupt (64h by default) if it is loaded
  5316. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5317. --------T-6204-------------------------------
  5318. INT 62 - Cswitch - TRIGGER SEMAPHORE
  5319.     AH = 04h
  5320.     DX = semaphore number (0-63)
  5321. Return: AX = status
  5322.         FFFFh bad semaphore number
  5323.         else  success
  5324. SeeAlso: AH=02h"Cswitch",AH=03h"Cswitch"
  5325. --------N-6204-------------------------------
  5326. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  5327.     AH = 04h
  5328.     BX = ???
  5329.     ES:SI -> FAR routine for ???
  5330. Return: CF clear if successful
  5331.     CF set on error
  5332.         AL = error code
  5333. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5334. --------T-6205-------------------------------
  5335. INT 62 - Cswitch - SLEEP
  5336.     AH = 05h
  5337.     BX = seconds to sleep
  5338. SeeAlso: AH=01h"Cswitch",AH=06h"Cswitch",AH=08h"Cswitch"
  5339. --------N-6205-------------------------------
  5340. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5341.     AH = 05h
  5342.     ???
  5343. Return: CF clear if successful
  5344.     CF set on error
  5345.         AL = error code
  5346. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5347. --------T-6206-------------------------------
  5348. INT 62 - Cswitch - SUSPEND
  5349.     AH = 06h
  5350. SeeAlso: AH=05h"Cswitch",AH=08h"Cswitch"
  5351. --------N-6206-------------------------------
  5352. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5353.     AH = 06h
  5354.     ???
  5355. Return: CF clear if successful
  5356.     CF set on error
  5357.         AL = error code
  5358. Range:    INT 4C to INT FB, selected by configuration
  5359. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5360.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5361.       consecutive interrupt (64h by default) if it is loaded
  5362. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5363. --------T-6207-------------------------------
  5364. INT 62 - Cswitch - SPAWN
  5365.     AH = 07h
  5366.     ES:BX -> function address to start executing at
  5367.     CX = priority (1-10)
  5368. Return: AX = result/status
  5369.         FFFDh  no free memory control blocks
  5370.         FFFEh  no free task control blocks
  5371.         FFFFh  not enough memory to create new task stack
  5372.         >0       the tcb number of the new task, indicating no error
  5373. SeeAlso: AH=0Fh"Cswitch",AH=10h"Cswitch"
  5374. --------N-6207-------------------------------
  5375. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5376.     AH = 07h
  5377.     DS:SI -> ???
  5378. Return: CF clear if successful
  5379.     CF set on error
  5380.         AL = error code
  5381. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5382. --------T-6208-------------------------------
  5383. INT 62 - Cswitch - WAKE UP TASK
  5384.     AH = 08h
  5385.     BX = tcb identifier
  5386. SeeAlso: AH=05h,AH=06h
  5387. --------N-6208-------------------------------
  5388. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5389.     AH = 08h
  5390.     CX = ???
  5391.     ES:SI -> ??? buffer (see #2120)
  5392. Return: CF clear if successful
  5393.     CF set on error
  5394.         AL = error code
  5395. Range:    INT 4C to INT FB, selected by configuration
  5396. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5397.  
  5398. Format of BW-TCP ??? buffer:
  5399. Offset    Size    Description    (Table 2120)
  5400.  00h  6 BYTEs    hardware address???
  5401.  06h  6 BYTEs    ???
  5402.  0Ch    WORD    ???
  5403.  0Eh    WORD    ???
  5404. ----------6208--CXFFFE-----------------------
  5405. INT 62 - MS SQL Server/Sybase DBLIBRARY interface - UNINSTALL/GET PSP ADDR
  5406.     AH = 08h
  5407.     CX = FFFEh
  5408.     DX = FFFFh
  5409. Return: AX = PSP address of resident DBLIBRARY
  5410. Note:    this call does not free the memory allocated to the TSR; the calling
  5411.       code must do the deallocation.
  5412. SeeAlso: INT 62"DBLIBRARY"
  5413. --------T-6209-------------------------------
  5414. INT 62 - Cswitch - SET PRIORITY
  5415.     AH = 09h
  5416.     BX = new base priority (1-10)
  5417. Note:    the lower the priority is numerically, the more often the task will run
  5418. --------N-6209-------------------------------
  5419. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - HOOK TIMER INTERRUPT
  5420.     AH = 09h
  5421. Return: CF clear if successful
  5422.         AX = handler ID
  5423.     CF set on error
  5424.         AL = error code
  5425. Range:    INT 4C to INT FB, selected by configuration
  5426. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5427.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5428.       consecutive interrupt (64h by default) if it is loaded
  5429. SeeAlso: AH=0Ah"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  5430. SeeAlso: INT 64"BW-NFS"
  5431. --------T-620A-------------------------------
  5432. INT 62 - Cswitch - TEST MESSAGE QUEUE
  5433.     AH = 0Ah
  5434.     DX = queue number (0-63)
  5435. Return: AX = result/message size
  5436.         0000h nothing on queue
  5437.         FFFFh bad queue number
  5438.         else  number of bytes in first message in queue
  5439. SeeAlso: AH=0Bh"Cswitch",AH=0Ch"Cswitch"
  5440. --------N-620A-------------------------------
  5441. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - UNHOOK TIMER INTERRUPT
  5442.     AH = 0Ah
  5443.     DX = handler ID
  5444. Return: CF clear if successful
  5445.     CF set on error
  5446.         AL = error code
  5447. SeeAlso: AH=09h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  5448. SeeAlso: INT 64"BW-NFS"
  5449. --------T-620B-------------------------------
  5450. INT 62 - Cswitch - SEND MESSAGE
  5451.     AH = 0Bh
  5452.     CX = number of bytes to write
  5453.     DS:SI -> buffer
  5454.     DX = queue number (0-63)
  5455. Return: AX = result/message size
  5456.         0000h no message was on queue
  5457.         FFFEh triggered by something arriving, redo the call
  5458.         FFFFh bad queue number
  5459.         else  number of bytes in message
  5460. SeeAlso: AH=0Ah"Cswitch",AH=0Ch"Cswitch"
  5461. --------N-620B-------------------------------
  5462. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ADD ???
  5463.     AH = 0Bh
  5464.     AL = ???
  5465.     DX = ???
  5466.     BP = ???
  5467.     ES:SI -> ???
  5468. Return: CF clear if successful
  5469.     CF set on error
  5470.         AL = error code
  5471. SeeAlso: AH=0Ch"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  5472. SeeAlso: INT 64"BW-NFS"
  5473. --------T-620C-------------------------------
  5474. INT 62 - Cswitch - READ MESSAGE
  5475.     AH = 0Ch
  5476.     CX = number of bytes to read
  5477.     DS:SI -> buffer
  5478.     DX = queue number (0-63)
  5479. Return: AX = status
  5480.         FFFFh bad queue number
  5481.         else  number of bytes transferred
  5482. SeeAlso: AH=0Ah,AH=0Bh
  5483. --------N-620C-------------------------------
  5484. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - REMOVE ???
  5485.     AH = 0Ch
  5486.     DX = ???
  5487.     BP = ???
  5488. Return: CF clear if successful
  5489.     CF set on error
  5490.         AL = error code
  5491. Range:    INT 4C to INT FB, selected by configuration
  5492. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5493.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5494.       consecutive interrupt (64h by default) if it is loaded
  5495. SeeAlso: AH=0Bh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP"
  5496. SeeAlso: INT 64"BW-NFS"
  5497. --------T-620D-------------------------------
  5498. INT 62 - Cswitch - DON'T ALLOW TASK TO BE SWAPPED OUT
  5499.     AH = 0Dh
  5500. SeeAlso: AH=0Eh"Cswitch"
  5501. --------N-620D-------------------------------
  5502. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - NOP for ETHDEV.ODI
  5503.     AH = 0Dh
  5504. Return: CF clear if successful
  5505.     CF set on error
  5506.         AL = error code
  5507. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5508. --------T-620E-------------------------------
  5509. INT 62 - Cswitch - ALLOW TASK TO BE SWAPPED OUT
  5510.     AH = 0Eh
  5511. SeeAlso: AH=0Dh"Cswitch"
  5512. --------N-620E-------------------------------
  5513. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - BEGIN CRITICAL SECTION
  5514.     AH = 0Eh
  5515. Return: CF clear if successful
  5516.     CF set on error
  5517.         AL = error code
  5518. SeeAlso: AH=0Fh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  5519. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  5520. --------T-620F-------------------------------
  5521. INT 62 - Cswitch - LOAD AND RUN PROGRAM FROM DISK
  5522.     AH = 0Fh
  5523.     ES:BX -> command line
  5524.     CX = priority (1-10)
  5525.     DX = background flag (nonzero allows loading to EMS)
  5526. Return: AX = status
  5527.         0000h task loader queue is full
  5528.         0001h  no error
  5529. SeeAlso: AH=07h"Cswitch",AH=10h"Cswitch",AH=13h"Cswitch"
  5530. --------N-620F-------------------------------
  5531. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - END CRITICAL SECTION
  5532.     AH = 0Fh
  5533. Return: CF clear if successful
  5534.     CF set on error
  5535.         AL = error code
  5536. Range:    INT 4C to INT FB, selected by configuration
  5537. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5538.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5539.       consecutive interrupt (64h by default) if it is loaded
  5540. SeeAlso: AH=0Eh"ETHDEV",AH=10h"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  5541. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  5542. --------T-6210-------------------------------
  5543. INT 62 - Cswitch - TERMINATE SPAWNED PROGRAM
  5544.     AH = 10h
  5545. SeeAlso: AH=07h"Cswitch",AH=0Fh"Cswitch"
  5546. --------N-6210-------------------------------
  5547. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - QUERY CRITICAL SECTION
  5548.     AH = 10h
  5549. Return: CF clear if no critical section active
  5550.     CF set if in critical section
  5551. SeeAlso: AH=0Eh"ETHDEV",AH=0Fh"ETHDEV",AH=FEh,INT 21/AH=3Fh"BW-TCP"
  5552. SeeAlso: INT 63"BW-TCP",INT 64"BW-NFS"
  5553. --------T-6211-------------------------------
  5554. INT 62 - Cswitch - GET TCB INFORMATION
  5555.     AH = 11h
  5556.     ES:BX -> a pointer which will be set to the tcb address
  5557. Return: AX = tcb indentifier
  5558. SeeAlso: AH=12h
  5559. --------N-6211-------------------------------
  5560. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - SET ???
  5561.     AH = 11h
  5562.     ES:SI -> ???
  5563. Return: CF clear
  5564. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5565. --------T-6212-------------------------------
  5566. INT 62 - Cswitch - GET TCB ADDRESS
  5567.     AH = 12h
  5568.     ES:BX -> a pointer which will be set to the tcb table address
  5569. Return: AX = tcb indentifier
  5570. SeeAlso: AH=11h"Cswitch"
  5571. --------N-6212-------------------------------
  5572. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET SOCKET NUMBER???
  5573.     AH = 12h
  5574. Return: CF clear if successful
  5575.         AX = socket number??? (memory variable incremented after reading)
  5576.     CF set on error
  5577.         AL = error code
  5578. Range:    INT 4C to INT FB, selected by configuration
  5579. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5580.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5581.       consecutive interrupt (64h by default) if it is loaded
  5582. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5583. --------T-6213-------------------------------
  5584. INT 62 - Cswitch - CHECK STATUS OF PREVIOUS LOAD_TASK
  5585.     AH = 13h
  5586. Return: AX = result
  5587.         FFFCh no Memory Control Blocks available
  5588.         FFFDh no TCBs available
  5589.         FFFEh insufficient memory
  5590.         FFFFh cannot open file
  5591.         0000h load in progress (not done yet)
  5592.         else  tcb indentifier
  5593. SeeAlso: AH=0Fh
  5594. --------N-6213-------------------------------
  5595. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5596.     AH = 13h
  5597.     CX = ???
  5598. Return: CF clear if successful
  5599.         AL = 00h
  5600.     CF set on error
  5601.         AL = error code
  5602. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5603. --------N-6214-------------------------------
  5604. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5605.     AH = 14h
  5606.     ES:SI -> ???
  5607. Return: CF clear if successful
  5608.         AL = 00h
  5609.     CF set on error
  5610.         AL = error code
  5611. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5612. --------N-6215-------------------------------
  5613. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - GET ???
  5614.     AH = 15h
  5615. Return: CF clear if successful
  5616.         AX = ??? (destroyed???)
  5617.     CF set on error
  5618.         AL = error code
  5619. Range:    INT 4C to INT FB, selected by configuration
  5620. Notes:    call this function after reading the "ETHDEV27" device
  5621.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5622.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5623.       consecutive interrupt (64h by default) if it is loaded
  5624. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5625. --------N-6216-------------------------------
  5626. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5627.     AH = 16h
  5628.     ???
  5629. Return: CF clear if successful
  5630.     CF set on error
  5631.         AL = error code
  5632. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5633. --------N-6217-------------------------------
  5634. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ???
  5635.     AH = 17h
  5636.     DX = segment of ???
  5637. Return: CF clear
  5638. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5639. --------N-6218-------------------------------
  5640. INT 62 - BW-TCP - HW DRIVER (ETHDEV.SYS) - ALLOCATE AND MAP EMS FOR DRIVER
  5641.     AH = 18h
  5642. Return: CF clear if successful
  5643.     CF set on error
  5644.         AL = error code
  5645. Range:    INT 4C to INT FB, selected by configuration
  5646. Notes:    calls function 17h after EMS allocated and mapped
  5647.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5648.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5649.       consecutive interrupt (64h by default) if it is loaded
  5650. SeeAlso: AH=FEh,INT 21/AH=3Fh"BW-TCP",INT 63"BW-TCP",INT 64"BW-NFS"
  5651. --------R-6247-------------------------------
  5652. INT 62 - PC Tools v7 COMMUTE - ???
  5653.     AH = 47h
  5654.     AL = subfunction (00h-31h)
  5655.     ???
  5656.     CF set
  5657. Return: ???
  5658. Program: COMMUTE is a remote-control program bundled with Central Point
  5659.       Software's PC Tools
  5660. --------R-6248-------------------------------
  5661. INT 62 - PC Tools v7 COMMUTE - ???
  5662.     AH = 48h
  5663.     AL = ???
  5664.     ???
  5665.     CF set
  5666. Return: ???
  5667. --------R-6249-------------------------------
  5668. INT 62 - PC Tools v7 COMMUTE - ???
  5669.     AH = 49h
  5670.     ???
  5671.     CF set
  5672. Return: ???
  5673. Note:    may be the same as AH=4Ch
  5674. --------R-624A-------------------------------
  5675. INT 62 - PC Tools v7 COMMUTE - ???
  5676.     AH = 4Ah
  5677.     AL = subfunction (00h-46h)
  5678.     ???
  5679.     CF set
  5680. Return: ???
  5681. --------R-624B--BX1234-----------------------
  5682. INT 62 - PC Tools v7 COMMUTE - ???
  5683.     AH = 4Bh
  5684.     BX = 1234h
  5685.     CX = 1234h
  5686.     ES = ???
  5687.     CF set
  5688. Return: ???
  5689. Program: COMMUTE is a remote-control program bundled with Central Point
  5690.       Software's PC Tools
  5691. --------R-624C-------------------------------
  5692. INT 62 - PC Tools v7 COMMUTE - ???
  5693.     AH = 4Ch
  5694.     BL = subfunction
  5695.         00h ???
  5696.         02h ???
  5697. Return: CF clear if successful
  5698.     CF set on error
  5699. --------R-626262-----------------------------
  5700. INT 62 - PC Tools v7 COMMUTE - INSTALLATION CHECK
  5701.     AX = 6262h
  5702.     CF set
  5703. Return: AX = 0000h
  5704.     BX = segment of resident code's PSP
  5705. Program: COMMUTE is a remote-control program bundled with Central Point
  5706.       Software's PC Tools
  5707. --------s-62C0-------------------------------
  5708. INT 62 U - GWBTSR - API
  5709.     AH = C0h
  5710.     AL = function
  5711.         00h installation check
  5712.         Return: AX = 00FFh if installed
  5713.         01h ???
  5714. Program: GWBTSR is a huge (48K) resident mixer controller for the Gateway 2000
  5715.       sound card (OEM version of Aztech Sound Galaxy)
  5716. Index:    installation check;GWBTSR
  5717. --------N-62FE-------------------------------
  5718. INT 62 - BW-TCP - ETHDRV.SYS - MAP EMS PAGE FRAME
  5719.     AH = FEh
  5720.     AL = direction
  5721.         00h map in driver's memory block
  5722.         01h map out driver's memory block
  5723. Return: CF clear if successful
  5724.     CF set on error
  5725.         AL = error code
  5726. Range:    INT 4C to INT FB, selected by configuration
  5727. Notes:    this function is supported by at least the SLIP and ODI versions of
  5728.       ETHDEV.SYS
  5729.     the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5730.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5731.       consecutive interrupt (64h by default) if it is loaded
  5732. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=00h"ETHDEV",INT 62/AH=18h"ETHDEV"
  5733. SeeAlso: INT 63"BW-TCP",INT 64/AH=FEh
  5734. --------*-63---------------------------------
  5735. INT 63 - reserved for user interrupt
  5736. --------d-63---------------------------------
  5737. INT 63 - Adaptec and OMTI controllers - DRIVE 0 DATA
  5738. Desc:    this vector stores the last four bytes of the parameter table for
  5739.       hard disk 0
  5740. SeeAlso: INT 60"Adaptec",INT 61"Adaptec",INT 62"Adaptec",INT 64"Adaptec"
  5741. --------b-63---------------------------------
  5742. INT 63 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  5743. Desc:    the low word of this vector contains the segment of the RAM data area
  5744.       to be used by the expansion ROM at F400h:4000h, and the high word
  5745.       contains the length of the data area; this segment and size are
  5746.       both set to 0000h if no ROM is installed at F400h:4000h
  5747. SeeAlso: INT 60"TI Professional PC",INT 62"TI Professional"
  5748. SeeAlso: INT 64"TI Professional PC"
  5749. ----------63---------------------------------
  5750. INT 63 - Oracle SQL Protected Mode Executive - ???
  5751. --------d-63---------------------------------
  5752. INT 63 - 4+Power FLOPPY CONTROLLER - ORIGINAL INT 13/40
  5753. Desc:    the "4+Power" quad floppy controller BIOS hooks INT 13 (or INT 40 if
  5754.       INT 13 has been moved there) and places the old value here
  5755. ----------63---------------------------------
  5756. INT 63 - Kofax KF9X00 image manipulation card interface
  5757. --------Q-63---------------------------------
  5758. INT 63 - DESQview/X - SOCKET API
  5759. Notes:    parameters are passed by patching!! data field immediately following
  5760.       the entry point, as detailed below (see #2121); the preferred
  5761.       method for calling the socket API is via INT 15/AX=DE2Eh
  5762.     the installation check consists of testing for the string "dvxunix"
  5763.       (yes, lowercase) at offset 9 from the interrupt handler start
  5764.       (see #2121)
  5765. SeeAlso: INT 15/AX=DE2Eh,INT BE"DESQview"
  5766. Index:    installation check;DESQview/X socket interface
  5767.  
  5768. Format of DESQview/X socket interrupt handler entry:
  5769. Offset    Size    Description    (Table 2121)
  5770.  00h  3 BYTEs    near jump or short jump + NOP to actual interrupt handler
  5771.  03h    WORD    offset from following pointer for initial top of local stack
  5772.  05h    DWORD    pointer to argument/stack block (see INT 15/AX=DE2Eh)
  5773.  09h  7 BYTEs    signature "dvxunix"
  5774. --------b-6300-------------------------------
  5775. INT 63 - HP 100LX - MAP HIGH MEMORY
  5776.     AH = 00h
  5777.     AL = physical page (00h seg C000, 01h seg C400h, ...)
  5778.     BX = zero-based logical page
  5779.     CX = page number
  5780.     DX = device ID (00h system ROM, 05h plugin, etc.)
  5781. Return: ???
  5782. SeeAlso: AH=01h
  5783. --------N-6300-------------------------------
  5784. INT 63 - BW-TCP - TCPIP.SYS - SET IP ADDRESS???
  5785.     AH = 00h
  5786.     DS:BX -> DWORD containing IP address (big-endian)
  5787. Return: CF clear if successful
  5788.     CF set on error
  5789.     AX destroyed
  5790. Range:    INT 4D to INT FC, selected by configuration
  5791. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5792.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5793.       consecutive interrupt (64h by default) if it is loaded
  5794. SeeAlso: AH=01h"BW-TCP",AH=02h"BW-TCP"
  5795. --------b-6301-------------------------------
  5796. INT 63 - HP 100LX - SAVE/RESTORE MEMORY MAP
  5797.     AH = 01h
  5798.     AL = function (00h save, 01h restore)
  5799.     ???
  5800. Return: ???
  5801. --------N-6301-------------------------------
  5802. INT 63 - BW-TCP - TCPIP.SYS - ???
  5803.     AH = 01h
  5804.     ES:BX -> ???
  5805.     ???
  5806. Return: ???
  5807. Range:    INT 4D to INT FC, selected by configuration
  5808. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  5809.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  5810.       consecutive interrupt (64h by default) if it is loaded
  5811. SeeAlso: AH=00h"BW-TCP",AH=02h"BW-TCP"
  5812. --------N-6302-------------------------------
  5813. INT 63 - BW-TCP - TCPIP.SYS - ???
  5814.     AH = 02h
  5815.     ???
  5816. Return: ???
  5817. SeeAlso: AH=00h"BW-TCP",AH=01h"BW-TCP"
  5818. --------N-6303-------------------------------
  5819. INT 63 - BW-TCP - TCPIP.SYS - GET IP ADDRESS
  5820.     AH = 03h
  5821.     DS:SI -> buffer for DWORD IP address (big-endian)
  5822. Return: AX destroyed
  5823.     CF clear if successful
  5824.     CF set on error
  5825. Note:    this call may use ARP or RARP to determine the address
  5826. --------N-6304-------------------------------
  5827. INT 63 - BW-TCP - TCPIP.SYS - ???
  5828.     AH = 04h
  5829.     ???
  5830. Return: ???
  5831. --------N-6305-------------------------------
  5832. INT 63 - BW-TCP - TCPIP.SYS - ???
  5833.     AH = 05h
  5834.     DS:BX -> ???
  5835.     ES:SI -> ???
  5836. Return: ???
  5837. Range:    INT 4D to INT FC, selected by configuration
  5838. --------N-6306-------------------------------
  5839. INT 63 - BW-TCP - TCPIP.SYS - ???
  5840.     AH = 06h
  5841.     ???
  5842. Return: ???
  5843. --------N-6307-------------------------------
  5844. INT 63 - BW-TCP - TCPIP.SYS - ???
  5845.     AH = 07h
  5846.     ???
  5847. Return: ???
  5848. --------N-6308-------------------------------
  5849. INT 63 - BW-TCP - TCPIP.SYS - SET DEFAULT ??? HANDLER
  5850.     AH = 08h
  5851.     DS:BX -> DWORD containing IP address
  5852. Return: CF clear if successful
  5853.     CF set on error
  5854.     ???
  5855. --------N-6309-------------------------------
  5856. INT 63 - BW-TCP - TCPIP.SYS - INSTALL ??? HANDLERS
  5857.     AH = 09h
  5858.     BL = handler type
  5859.     ES:SI -> FAR handler of specified type
  5860. Return: ???
  5861. SeeAlso: AH=0Ah,AH=0Dh
  5862. --------N-630A-------------------------------
  5863. INT 63 - BW-TCP - TCPIP.SYS - DELETE ??? HANDLERS
  5864.     AH = 0Ah
  5865.     BL = handler type
  5866. Return: CF clear if successful
  5867.     CF set on error (no handler of specified type installed)
  5868. SeeAlso: AH=09h
  5869. --------N-630B-------------------------------
  5870. INT 63 - BW-TCP - TCPIP.SYS - ???
  5871.     AH = 0Bh
  5872.     AL = ???
  5873.     DL = ???
  5874.     DS:BX -> ???
  5875.     ES:SI -> ???
  5876. Return: ???
  5877. --------N-630C-------------------------------
  5878. INT 63 - BW-TCP - TCPIP.SYS - ???
  5879.     AH = 0Ch
  5880.     ???
  5881. Return: ???
  5882. Range:    INT 4D to INT FC, selected by configuration
  5883. --------N-630D-------------------------------
  5884. INT 63 - BW-TCP - TCPIP.SYS - INSTALL DEFAULT ??? HANDLER
  5885.     AH = 0Dh
  5886.     ???
  5887. Return: ???
  5888. Note:    if not already installed, installs a type 06h handler with AH=09h
  5889. SeeAlso: AH=09h
  5890. --------N-630E-------------------------------
  5891. INT 63 - BW-TCP - TCPIP.SYS - CLOSE NETWORK DESCRIPTOR
  5892.     AH = 0Eh
  5893.     ???
  5894. Return: ???
  5895. SeeAlso: INT 61/AH=08h"PC/TCP",INT 61/AH=09h"PC/TCP",INT 61/AH=18h
  5896. --------N-630F-------------------------------
  5897. INT 63 - BW-TCP - TCPIP.SYS - ???
  5898.     AH = 0Fh
  5899.     AL = ???
  5900.     SI = ???
  5901.     DS:DI -> ???
  5902.     ???
  5903. Return: ???
  5904. Range:    INT 4D to INT FC, selected by configuration
  5905. --------N-6310-------------------------------
  5906. INT 63 - BW-TCP - TCPIP.SYS - ???
  5907.     AH = 10h
  5908.     DS:DI -> ???
  5909.     ???
  5910. Return: ???
  5911. --------N-6311-------------------------------
  5912. INT 63 - BW-TCP - TCPIP.SYS - ???
  5913.     AH = 11h
  5914.     ???
  5915. Return: ???
  5916. --------N-6312-------------------------------
  5917. INT 63 - BW-TCP - TCPIP.SYS - LISTEN FOR INCOMING CONNECTIONS
  5918.     AH = 12h
  5919.     DS:SI -> ???
  5920.     ES:BP -> ???
  5921. Return: ???
  5922. SeeAlso: INT 61/AH=23h
  5923. --------N-6313-------------------------------
  5924. INT 63 - BW-TCP - TCPIP.SYS - NOP
  5925.     AH = 13h
  5926. Return: nothing
  5927. Range:    INT 4D to INT FC, selected by configuration
  5928. --------N-6314-------------------------------
  5929. INT 63 - BW-TCP - TCPIP.SYS - OPEN NETWORK CONNECTION
  5930.     AH = 14h
  5931.     BX = network descriptor???
  5932.     DS:SI -> ???
  5933.     ES:BP -> ???
  5934. Return: ???
  5935. SeeAlso: INT 61/AH=13h"PC/TCP",INT 62/AH=13h"ETHDEV"
  5936. --------N-6315-------------------------------
  5937. INT 63 - BW-TCP - TCPIP.SYS - ???
  5938.     AH = 15h
  5939.     DS:DI -> ???
  5940.     ???
  5941. Return: ???
  5942. Range:    INT 4D to INT FC, selected by configuration
  5943. --------N-6316-------------------------------
  5944. INT 63 - BW-TCP - TCPIP.SYS - RESET NETWORK CONNECTION
  5945.     AH = 16h
  5946.     DS:DI -> ???
  5947. Return: ???
  5948. Note:    calls AH=17h after preprocessing
  5949. SeeAlso: AH=17h,INT 61/AH=19h"PC/TCP"
  5950. --------N-6317-------------------------------
  5951. INT 63 - BW-TCP - TCPIP.SYS - ???
  5952.     AH = 17h
  5953.     DS:DI -> ???
  5954.     ???
  5955. Return: ???
  5956. Range:    INT 4D to INT FC, selected by configuration
  5957. SeeAlso: AH=18h
  5958. --------N-6318-------------------------------
  5959. INT 63 - BW-TCP - TCPIP.SYS - ???
  5960.     AH = 18h
  5961.     DS:DI -> ???
  5962.     ???
  5963. Return: ???
  5964. Note:    same as AH=17h, except performed with interrupts disabled
  5965. SeeAlso: AH=17h
  5966. --------N-6319-------------------------------
  5967. INT 63 - BW-TCP - TCPIP.SYS - WRITE TO THE NETWORK
  5968.     AH = 19h
  5969.     DS:DI -> ???
  5970.     ???
  5971. Return: BX = number of bytes NOT written
  5972.     ???
  5973. Range:    INT 4D to INT FC, selected by configuration
  5974. Note:    calls AH=17h with interrupts disabled and ??? set to 01h
  5975. SeeAlso: AH=1Ah,AH=1Bh,INT 61/AH=1Ah"PC/TCP"
  5976. --------N-631A-------------------------------
  5977. INT 63 - BW-TCP - TCPIP.SYS - READ FROM THE NETWORK
  5978.     AH = 1Ah
  5979.     CX = maximum number of bytes to read
  5980.     ES:BP -> ???
  5981.     ???
  5982. Return: CX = number of bytes actually read
  5983.     ???
  5984. SeeAlso: AH=19h,INT 61/AH=1Bh"PC/TCP"
  5985. --------N-631B-------------------------------
  5986. INT 63 - BW-TCP - TCPIP.SYS - ???
  5987.     AH = 1Bh
  5988.     CX = ???
  5989.     ES:BP -> ???
  5990. Return: DX = ???
  5991.     ???
  5992. Range:    INT 4D to INT FC, selected by configuration
  5993. --------N-631C-------------------------------
  5994. INT 63 - BW-TCP - TCPIP.SYS - ???
  5995.     AH = 1Ch
  5996.     DS:DI -> ???
  5997.     ???
  5998. Return: ???
  5999. Note:    calls AH=17h with ???
  6000. SeeAlso: AH=17h
  6001. --------N-631D-------------------------------
  6002. INT 63 - BW-TCP - TCPIP.SYS - ???
  6003.     AH = 1Dh
  6004.     ???
  6005. Return: ???
  6006. Range:    INT 4D to INT FC, selected by configuration
  6007. --------N-631E-------------------------------
  6008. INT 63 - BW-TCP - TCPIP.SYS - ???
  6009.     AH = 1Eh
  6010.     DS:BX -> DWORD containing IP address (big-endian)
  6011.     ???
  6012. Return: CF clear if successful
  6013.     CF set on error
  6014.     ???
  6015. --------N-631F-------------------------------
  6016. INT 63 - BW-TCP - TCPIP.SYS - SET SOCKET ??? HANDLER
  6017.     AH = 1Fh
  6018.     BX = socket number
  6019.     ES:SI -> FAR function for ???
  6020. Return: CF clear if successful
  6021.     CF set on error (out of slots)
  6022. SeeAlso: AH=20h
  6023. --------N-6320-------------------------------
  6024. INT 63 - BW-TCP - TCPIP.SYS - REMOVE SOCKET ??? HANDLER
  6025.     AH = 20h
  6026.     BX = socket number
  6027. Return: CF clear if successful
  6028.     CF set on error (not set)
  6029. Range:    INT 4D to INT FC, selected by configuration
  6030. SeeAlso: AH=1Fh
  6031. --------N-6321-------------------------------
  6032. INT 63 - BW-TCP - TCPIP.SYS - ???
  6033.     AH = 21h
  6034.     ES:SI -> ???
  6035. Return: ???
  6036. SeeAlso: INT 61/AH=1Ch"PC/TCP"
  6037. --------N-6322-------------------------------
  6038. INT 63 - BW-TCP - TCPIP.SYS - REMOVE ??? HANDLER
  6039.     AH = 22h
  6040. Return: CF clear
  6041. Range:    INT 4D to INT FC, selected by configuration
  6042. Note:    decrements a counter if not already zero, and calls AH=0Ah with BL=11h
  6043.       if the counter reaches zero
  6044. --------N-6323-------------------------------
  6045. INT 63 - BW-TCP - TCPIP.SYS - ???
  6046.     AH = 23h
  6047.     DS:BX -> ???
  6048.     ES:SI -> 6-byte buffer for ???
  6049. Return: CF clear if successful
  6050.     CF set on error
  6051. --------N-6324-------------------------------
  6052. INT 63 - BW-TCP - TCPIP.SYS - GET SOCKET
  6053.     AH = 24h
  6054. Return: AX = socket number (0400h-FFFFh)
  6055. Range:    INT 4D to INT FC, selected by configuration
  6056. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6057.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6058.       consecutive interrupt (64h by default) if it is loaded
  6059. SeeAlso: INT 62/AH=12h"ETHDEV",INT 64"BW-NFS"
  6060. --------N-6325-------------------------------
  6061. INT 63 - BW-TCP - TCPIP.SYS - GET INTERNET ADDRESS
  6062.     AH = 25h
  6063. Return: CL:CH:DL:DH = caller's Internet address
  6064. SeeAlso: AH=26h,INT 61/AH=05h"PC/TCP"
  6065. --------N-6326-------------------------------
  6066. INT 63 - BW-TCP - TCPIP.SYS - SET INTERNET ADDRESS???
  6067.     AH = 26h
  6068.     CL:CH:DL:DH = Internet address
  6069. Return: nothing
  6070. Range:    INT 4D to INT FC, selected by configuration
  6071. Note:    this function sets a different variable than AH=25h returns
  6072. SeeAlso: AH=25h
  6073. --------N-6327-------------------------------
  6074. INT 63 - BW-TCP - TCPIP.SYS - SET ???
  6075.     AH = 27h
  6076.     BX = ???
  6077.     ES:SI -> ???
  6078. Return: ???
  6079. --------N-6328-------------------------------
  6080. INT 63 - BW-TCP - TCPIP.SYS - ???
  6081.     AH = 28h
  6082.     ???
  6083. Return: ???
  6084. --------N-6329-------------------------------
  6085. INT 63 - BW-TCP - TCPIP.SYS - ???
  6086.     AH = 29h
  6087.     ???
  6088. Return: ???
  6089. Range:    INT 4D to INT FC, selected by configuration
  6090. Note:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6091.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6092.       consecutive interrupt (64h by default) if it is loaded
  6093. --------*-64---------------------------------
  6094. INT 64 - reserved for user interrupt
  6095. --------d-64---------------------------------
  6096. INT 64 - Adaptec controllers - DRIVE 1 DATA
  6097. Desc:    this vector stores the first four bytes of the parameter table for
  6098.       hard disk 1
  6099. Notes:    these vectors are used by the following Adaptec controllers:
  6100.         ACB 2370 A/B/C, ACB 2372 A/B/C, ACB 2333 A/B, 2322B-8, 2322B-16
  6101.     these vectors are NOT used by the following Adaptec controllers:
  6102.         ACB 2310, ACB 2312, ACB 2320D, ACB 2322D
  6103. SeeAlso: INT 60"Adaptec",INT 65"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  6104. --------b-64---------------------------------
  6105. INT 64 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  6106. Desc:    the low word of this vector contains the segment of the RAM data area
  6107.       to be used by the expansion ROM at F400h:6000h, and the high word
  6108.       contains the length of the data area; this segment and size are
  6109.       both set to 0000h if no ROM is installed at F400h:6000h
  6110. SeeAlso: INT 60"TI Professional PC",INT 63"TI Professional"
  6111. SeeAlso: INT 65"TI Professional PC"
  6112. ----------64---------------------------------
  6113. INT 64 - Oracle SQL Protected Mode Executive - ???
  6114. --------N-64---------------------------------
  6115. INT 64 - Novell NetWare to v2.0a - LOW-LEVEL API
  6116. Note:    equivalent to INT 7A for NetWare versions through 2.0a only; later
  6117.       versions do not use this interrupt for IPX/SPX access, instead
  6118.       getting an entry point from INT 2F/AX=7A00h
  6119. SeeAlso: INT 2F/AX=7A00h,INT 7A"Novell"
  6120. --------h-64---------------------------------
  6121. INT 64 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  6122. SeeAlso: INT 65"DG10",INT 66"DG10"
  6123. --------r-64---------------------------------
  6124. INT 64 - Extended Batch Language v3.14+
  6125.     AH = function
  6126.         00h to 5Fh chained to previous handler
  6127.         60h to 6Ch reserved, return immediately
  6128.         80h to FFh chained to previous handler
  6129.         6Dh (v4.01+) insert tone in queue
  6130.         AL = ???
  6131.         CX = frequency in Hertz
  6132.         DL = duration in clock ticks
  6133.         Return: AL = 00h if note stored
  6134.                = 01h if no room to store
  6135.         6Eh clear ??? counter/flag
  6136.         6Fh return counter/flag that AH=6Eh clears
  6137.         70h ???
  6138.         AL = ???
  6139.         71h ???
  6140.         AL = ???
  6141.         72h ???
  6142.         73h insert byte at end of keyboard buffer
  6143.         AL = byte to insert
  6144.         Return: AL = 00h if byte inserted
  6145.                = 01h if no room to store
  6146.         74h insert byte at front of keyboard buffer
  6147.         AL = byte to insert
  6148.         Return: AL = 00h if byte inserted
  6149.                = 01h if no room to store
  6150.         75h ???
  6151.         76h get keyboard "stack" status
  6152.         AL = 'K' if kbd read will read physical keyboard
  6153.              'S' if it will read EBL internal keyboard buffer
  6154.         AH = ???
  6155.         77h clear internal keyboard buffer
  6156.         78h ???
  6157.         AL = ???
  6158.         79h ???
  6159.         7Ah ???
  6160.         AL = ???
  6161.         7Bh ???
  6162.         AL = ???
  6163.         7Ch ???
  6164.         AL = ???
  6165.         7Dh ???
  6166.         AL = ???
  6167.         7Eh clear buffer for ???
  6168.         7Fh installation check
  6169.         Return: CX = version in BCD
  6170.             DI = segment of ???
  6171.             BX = segment of next program's PSP???
  6172. Program: Extended Batch Language is a batch-file enhancer by Seaware
  6173. Notes:    the chaining does not check whether the interrupt had been hooked
  6174.       before, so if you try to chain when the previous vector was
  6175.       0000h:0000h, you'll be in trouble
  6176.     functions 72h and 7Ah-7Dh appear to be interfaces to the optional
  6177.       floating-point and extended function packages
  6178. Index:    installation check;EBL|installation check;Extended Batch Language
  6179. --------d-64---------------------------------
  6180. INT 64 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  6181. Note:    This vector is overwritten by Pdisk to install custom harddrive types.
  6182.       It can either destroy 4 vectors and take no memory or TSR and take
  6183.       up some memory.
  6184. SeeAlso: INT 65"Pdisk"
  6185. --------N-6401-------------------------------
  6186. INT 64 U - BW-NFS - BWRPC - ???
  6187.     AH = 01h
  6188.     ES:BX -> ??? (at least 8 bytes)
  6189.     ES:BP -> DWORD ???
  6190.     ???
  6191. Return: CF clear if successful
  6192.         ???
  6193.     CF set on error
  6194.         CX = 0000h
  6195. Range:    INT 4E to INT FD, selected by configuration
  6196. Notes:    the Beame&Whiteside TCP/IP protocol stack uses two consecutive
  6197.       interrupts (62h and 63h by default); the BW-NFS client uses a third
  6198.       consecutive interrupt (64h by default) if it is loaded
  6199.     the BWRPC installation check consists of determining the interrupt
  6200.       vector assigned to it (two more than the value returned by reading
  6201.       the ETHDEV27 device), and testing whether the word immediately
  6202.       preceding the interrupt handler is 4257h ('BW')
  6203. SeeAlso: INT 62/AH=00h"ETHDEV",INT 63"BW-TCP"
  6204. Index:    installation checks;BWRPC
  6205. --------N-6402-------------------------------
  6206. INT 64 U - BW-NFS - BWRPC - ???
  6207.     AH = 02h
  6208.     DS:DI -> ???
  6209. Return: ???
  6210. Note:    this call is passed directly through to INT 62/AH=07h
  6211. SeeAlso: INT 62/AH=07h"ETHDEV"
  6212. --------N-6403-------------------------------
  6213. INT 64 U - BW-NFS - BWRPC - ADD ???
  6214.     AH = 03h
  6215.     AL = ???
  6216.     BP = ???
  6217.     ES:SI -> ???
  6218. Return: ???
  6219. Note:    this call is passed directly through to INT 62/AH=0Bh
  6220. SeeAlso: AH=04h,INT 62/AH=0Bh"ETHDEV"
  6221. --------N-6404-------------------------------
  6222. INT 64 U - BW-NFS - BWRPC - REMOVE ???
  6223.     AH = 04h
  6224.     BP = ???
  6225. Return: ???
  6226. Range:    INT 4E to INT FD, selected by configuration
  6227. Note:    this call is passed directly through to INT 62/AH=0Ch
  6228. SeeAlso: AH=03h,INT 62/AH=0Ch"ETHDEV"
  6229. --------N-6405-------------------------------
  6230. INT 64 U - BW-NFS - BWRPC - ???
  6231.     AH = 05h
  6232.     CX = ???
  6233. Return: ???
  6234. Note:    this call is passed directly through to INT 62/AH=13h
  6235. SeeAlso: INT 62/AH=13h"ETHDEV"
  6236. --------N-6406-------------------------------
  6237. INT 64 U - BW-NFS - BWRPC - ???
  6238.     AH = 06h
  6239.     ES:SI -> ???
  6240. Return: AL = 00h if CF clear
  6241. Range:    INT 4E to INT FD, selected by configuration
  6242. Note:    this call is passed directly through to INT 62/AH=14h
  6243. SeeAlso: INT 62/AH=14h"ETHDEV"
  6244. --------N-6407-------------------------------
  6245. INT 64 U - BW-NFS - BWRPC - GET IP ADDRESS
  6246.     AH = 07h
  6247. Return: CX:DX = IP address
  6248. --------N-6410-------------------------------
  6249. INT 64 U - BW-NFS - BWRPC - CALL ETHDEV.SYS
  6250.     AH = 10h
  6251.     AL = ETHDEV function number
  6252.     other registers as appropriate for ETHDEV call
  6253. Return: as returned by ETHDEV
  6254. Note:    this call is passed directly through to INT 62
  6255. SeeAlso: INT 62/AH=00h"ETHDEV"
  6256. --------N-6411-------------------------------
  6257. INT 64 U - BW-NFS - BWRPC - NOP???
  6258.     AH = 11h
  6259. Return: CF clear
  6260. Range:    INT 4E to INT FD, selected by configuration
  6261. --------N-64FE-------------------------------
  6262. INT 64 - BW-NFS - BWRPC - MAP EMS PAGE FRAME
  6263.     AH = FEh
  6264.     AL = direction
  6265.         00h map in driver's memory block
  6266.         01h map out driver's memory block
  6267. Return: CF clear if successful
  6268.     CF set on error
  6269.         AL = error code
  6270. Range:    INT 4E to INT FD, selected by configuration
  6271. Note:    this call is passed through directly to ETHDEV.SYS (see INT 62/AH=FEh)
  6272. SeeAlso: INT 21/AH=3Fh"BW-TCP",INT 62/AH=FEh,INT 63"BW-TCP"
  6273. --------*-65---------------------------------
  6274. INT 65 - reserved for user interrupt
  6275. --------d-65---------------------------------
  6276. INT 65 - Adaptec controllers - DRIVE 1 DATA
  6277. Desc:    this vector stores the second four bytes of the parameter table for
  6278.       hard disk 1
  6279. SeeAlso: INT 64"Adaptec",INT 66"Adaptec",INT 67"Adaptec"
  6280. --------b-65---------------------------------
  6281. INT 65 - TI Professional PC - OPTION ROM DATA AREA POINTER (NOT A VECTOR!)
  6282. Desc:    the low word of this vector contains the segment of the RAM data area
  6283.       to be used by the expansion ROM at F400h:8000h, and the high word
  6284.       contains the length of the data area; this segment and size are
  6285.       both set to 0000h if no ROM is installed at F400h:8000h
  6286. SeeAlso: INT 60"TI Professional PC",INT 64"TI Professional"
  6287. SeeAlso: INT 66"TI Professional PC"
  6288. --------h-65---------------------------------
  6289. INT 65 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  6290. SeeAlso: INT 64"DG10",INT 66"DG10"
  6291. --------N-65---------------------------------
  6292. INT 65 - FTP Software NDIS-Packet Driver adapter - POST PROCESSING INTERRUPT
  6293. --------U-65---------------------------------
  6294. INT 65 - SD.COM v6.2
  6295. Desc:    The unregistered version of SD62.COM uses the low byte of this vector
  6296.       to count the number of invocations, displaying a registration
  6297.       reminder each time after the 20th use.
  6298. --------d-65---------------------------------
  6299. INT 65 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  6300. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  6301. --------s-65---------------------------------
  6302. INT 65 - Ad Lib SOUND.COM - INTERFACE
  6303.     SI = function number (see also entries below)
  6304.         0000h Init
  6305.         0002h RelTimeStart
  6306.         0003h SetState
  6307.         0004h GetState
  6308.         0005h Flush
  6309.         0006h SetMode
  6310.         0007h GetMode
  6311.         0008h SetRelVolume
  6312.         0009h SetTempo
  6313.         000Ah SetTranspose
  6314.         000Bh GetTranspose
  6315.         000Ch SetActVoice
  6316.         000Dh GetActVoice
  6317.         000Eh PlayNoteDel
  6318.         000Fh PlayNote
  6319.         0010h SetTimbre
  6320.         0011h SetPitch
  6321.         0012h SetTickBeat
  6322.         0013h NoteOn
  6323.         0014h NoteOff
  6324.         0015h Timbre
  6325.         0016h SetPitchBend
  6326.         0017h WaveForm
  6327.     ES:BX -> arguments
  6328. Note:    the installation check consists of checking for the signature block
  6329.       immediately preceding the interrupt handler (see #2122)
  6330. SeeAlso: SI=8000h
  6331. Index:    installation check;Ad Lib SOUND.COM
  6332.  
  6333. Format of AdLib signature block:
  6334. Offset    Size    Description    (Table 2122)
  6335.  00h    WORD    version number
  6336.  02h 19 BYTEs    "SOUND-DRIVER-AD-LIB"
  6337.  15h    BYTE    01h
  6338.  16h    BYTE    01h
  6339.  17h    BYTE    00h
  6340. --------s-65----SI0000-----------------------
  6341. INT 65 - Ad Lib SOUND.COM - INITIALIZE (RESET)
  6342.     SI = 0000h
  6343. --------s-65----SI0003-----------------------
  6344. INT 65 - Ad Lib SOUND.COM - SET STATE
  6345.     SI = 0003h
  6346.     ES:BX -> WORD new state (0000h disabled, 0001h enabled)
  6347. SeeAlso: SI=0004h
  6348. --------s-65----SI0004-----------------------
  6349. INT 65 - Ad Lib SOUND.COM - GET STATE
  6350.     SI = 0004h
  6351. Return: AX = status
  6352.         0000h all done playing sounds
  6353.         else  still playing sounds
  6354. SeeAlso: SI=0003h
  6355. --------s-65----SI0006-----------------------
  6356. INT 65 - Ad Lib SOUND.COM - SET MODE
  6357.     SI = 0006h
  6358.     ES:BX -> WORD new mode (0000h melodic, 0001h percussive)
  6359. SeeAlso: SI=0007h
  6360. --------s-65----SI0007-----------------------
  6361. INT 65 - Ad Lib SOUND.COM - GET MODE
  6362.     SI = 0007h
  6363. Return: AX = mode
  6364.         0000h melodic
  6365.         0001h percussive
  6366. SeeAlso: SI=0006h
  6367. --------s-65----SI000C-----------------------
  6368. INT 65 - Ad Lib SOUND.COM - SET ACTIVE VOICE
  6369.     SI = 000Ch
  6370.     ES:BX -> WORD voice = 0000h to 0008h
  6371. SeeAlso: SI=000Dh
  6372. --------s-65----SI000D-----------------------
  6373. INT 65 - Ad Lib SOUND.COM - GET ACTIVE VOICE
  6374.     SI = 000Dh
  6375. Return: AX = voice (0000h to 0008h)
  6376. SeeAlso: SI=000Ch
  6377. --------s-65----SI8000-----------------------
  6378. INT 65 u - Media Vision FM.COM v4.1a+ - GET INTERNAL DATA STRUCTURES
  6379.     SI = 8000h
  6380. Return: DX:AX -> internal data structures
  6381. Program: FM.COM is an Ad Lib SOUND.COM-compatible driver for Media Vision's
  6382.       Pro Audio Spectrum sound boards
  6383. SeeAlso: SI=8001h
  6384. --------s-65----SI8001-----------------------
  6385. INT 65 u - Media Vision FM.COM v4.1a+ - GET VOICE COUNT
  6386.     SI = 8001h
  6387. Return: AX = ???
  6388.     DX = number of voices??? (09h or 0Bh)
  6389. SeeAlso: SI=8000h
  6390. --------s-65----SI8002-----------------------
  6391. INT 65 - Media Vision FM.COM v4.1a+ - START BACKGROUND FM SOUNDS
  6392.     SI = 8002h
  6393. SeeAlso: SI=8003h
  6394. --------s-65----SI8003-----------------------
  6395. INT 65 - Media Vision FM.COM v4.1a+ - STOP BACKGROUND FM SOUNDS
  6396.     SI = 8003h
  6397. SeeAlso: SI=8002h
  6398. --------s-65----SI8004-----------------------
  6399. INT 65 U - Media Vision FM.COM v4.1a+ - GET ???
  6400.     SI = 8004h
  6401. Return: AX = ??? (0280h)
  6402.     DX = ??? (01A0h)
  6403. --------s-65----SI8005-----------------------
  6404. INT 65 U - Media Vision FM.COM v4.1a+ - ???
  6405.     SI = 8005h
  6406.     ???
  6407. Return: ???
  6408. SeeAlso: SI=8000h
  6409. --------S-65---------------------------------
  6410. INT 65 U - EZRECV v1.0 - API
  6411.     AX = function
  6412.         0000h ???
  6413.         Return: AX = ??? or FFFFh
  6414.         0001h ???
  6415.         Return: AX = status (0000h or 0001h)
  6416.         0002h ???
  6417.         Return: AX = status (0000h or 0001h)
  6418.         0003h set ??? to 0001h
  6419.         Return: AX = 0000h
  6420.         0004h ???
  6421.         Return: AX = ???
  6422. Return: BH = COM port being used
  6423.     BL = speed???
  6424.     CH = ???
  6425.     CL = ???
  6426.     DX = ???
  6427.     DS = ???
  6428.     ES = EZRECV data segment
  6429. Program: EZRECV is a background Zmodem file receiver by Express Consulting
  6430. --------*-66---------------------------------
  6431. INT 66 - reserved for user interrupt
  6432. --------d-66---------------------------------
  6433. INT 66 - Adaptec controllers - DRIVE 1 DATA
  6434. Desc:    this vector stores the third four bytes of the parameter table for
  6435.       hard disk 1
  6436. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 67"Adaptec"
  6437. --------b-66---------------------------------
  6438. INT 66 - TI Professional PC - SYSTEM INFORMATION (NOT A VECTOR!)
  6439. Desc:    the low word of this vector contains the system memory size in
  6440.       paragraphs; the third byte contains the number of outstanding
  6441.       interrupt requests, and the fourth byte contains a description
  6442.       of the installed drive types (see #2123)
  6443. SeeAlso: INT 60"TI Professional PC",INT 67"TI Professional"
  6444.  
  6445. Bitfields for TI Professional drive type information:
  6446. Bit(s)    Description    (Table 2123)
  6447.  7    floppy drive D: has 80 tracks
  6448.  6    floppy drive D: is double-sided
  6449.  5    floppy drive C: has 80 tracks
  6450.  4    floppy drive C: is double-sided
  6451.  3    floppy drive B: has 80 tracks
  6452.  2    floppy drive B: is double-sided
  6453.  1    floppy drive A: has 80 tracks
  6454.  0    floppy drive A: is double-sided
  6455. --------h-66---------------------------------
  6456. INT 66 - Data General DG10 - MicroECLIPSE COPROCESSOR INTERFACE
  6457. SeeAlso: INT 64"DG10"
  6458. --------N-66---------------------------------
  6459. INT 66 C - Nanosoft, Inc. TurboNET - NETWORK PROCESSING ???
  6460. Program: TurboNET is a NetBIOS-based file redirector and server
  6461. Note:    hooked but not used (IRET) by both redirector and server; called from
  6462.       server's INT 28 handler
  6463. SeeAlso: INT 2F/AX=8100h
  6464. --------d-66---------------------------------
  6465. INT 66 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  6466. SeeAlso: INT 64"Pdisk",INT 67"Pdisk"
  6467. --------W-66---------------------------------
  6468. INT 66 - Microsoft Windows VITD.386 Virtual Interval Timer
  6469. Note:    This Windows 3.x Virtual Device Driver implements a virtual timer
  6470.       which will expire and call INT 66.  This timer can be used to
  6471.       calculate elapsed execution time etc.
  6472. --------K-66---------------------------------
  6473. INT 66 - Newkey v5.4 - INSTALLATION VECTOR
  6474. Return: immediately (IRET)
  6475. Program: Newkey is a shareware keyboard macro program by Frank A. Bell
  6476. Range:    INT 60h to INT 67h, selected by scanning for highest unused vector
  6477. Note:    the installation check consists of testing for the signature bytes
  6478.       FDh FCh FFh FEh at offset 03h in the interrupt handlers segment
  6479. BUG:    the code obviously intends to use INT F0-FE, INT 70-77, and INT 68-6F
  6480.       before falling back to INT 60-67, but only uses the last of these
  6481.       ranges in v5.4
  6482. SeeAlso: INT 2F/AX=E300h
  6483. Index: installation checks;Newkey|Newkey;installation check
  6484. --------U-66---------------------------------
  6485. INT 66 - PC-Magazin - INCA
  6486.     details not yet availble
  6487. Program: INCA is a utility from PC-Magazin (the German edition of PC Magazine)
  6488.       issue 51-52/85.
  6489. SeeAlso: INT 61"SWAPx"
  6490. --------F-6601-------------------------------
  6491. INT 66 - BitFax Scheduler - SET MODE???
  6492.     AH = 01h
  6493. SeeAlso: AH=02h
  6494. --------F-6602-------------------------------
  6495. INT 66 - BitFax Scheduler - SET MODE???
  6496.     AH = 02h
  6497. SeeAlso: AH=01h
  6498. --------F-6603-------------------------------
  6499. INT 66 - BitFax Scheduler - SCHEDULE FAX TRANSMISSIONS
  6500.     AH = 03h
  6501.     ???
  6502. Return: ???
  6503. SeeAlso: AH=05h
  6504. --------F-6604-------------------------------
  6505. INT 66 - BitFax Scheduler - GET STATUS???
  6506.     AH = 04h
  6507. Return: AX = ??? (0000h or 0001h)
  6508.     DX = BitSched version???  (for versions >= 3.00)
  6509.         9796h (ver. 3.00)
  6510.         97E6h (ver. 3.02)
  6511.         92D0h (ver. 3.04.06)
  6512.         9510h (ver. 3.06.02)
  6513. SeeAlso: AH=06h,AX=3345h,INT 2F/AX=8000h"FaxBIOS"
  6514. --------F-6605-------------------------------
  6515. INT 66 - BitFax Scheduler - CONVERT FILE AND SEND FAX
  6516.     AH = 05h
  6517.     BX:CX -> command block (see #2124)
  6518.     ???
  6519. Return: ???
  6520. SeeAlso: AH=03h
  6521.  
  6522. Format of BitFax command block:
  6523. Offset    Size    Description    (Table 2124)
  6524.  00h 18 BYTEs    configuration bytes???
  6525.  12h    BYTEs    ASCIZ temporary file name to place converted fax
  6526.  52h    BYTEs    ASCIZ directory containing BitFax executables
  6527.  92h    BYTEs    ASCIZ telephone number
  6528.  C2h    BYTE    cover page control (00h don't send, 01h do send cover page)
  6529.  C3h 15 BYTEs    configuration bytes???
  6530.  E2h    BYTEs    ASCIZ path of BITFAX.TRA file (containing additional
  6531.           configuration information???)
  6532. 122h    BYTEs    configuration bytes???
  6533. 12Ch    BYTE    00h don't send cover page
  6534.         01h send cover page
  6535. 12Dh  7 BYTEs    configuration bytes???
  6536. 134h    BYTEs    ASCIZ path of file to send
  6537. 174h    BYTEs    more configuration bytes???
  6538.     ???
  6539. --------F-6606-------------------------------
  6540. INT 66 - BitFax Scheduler - SET MODE???
  6541.     AH = 06h
  6542. Return: DX = BitSched version??? (same as AH=04h)
  6543. SeeAlso: AH=04h
  6544. --------s-660688-----------------------------
  6545. INT 66 - IBMSND driver - PLAY 8-BIT DIGITIZED SOUND
  6546.     AX = 0688h
  6547.     DS:SI -> SNDSTRUC (see #2125)
  6548. Return: ???
  6549. Program: The IBMSND driver is part of John W. Ratcliff's
  6550.        The IBM Digitized Sound Package
  6551. Note:    the installation check consists of looking for a valid signature
  6552.       string six bytes prior to the interrupt handler; this string may
  6553.       be either "KERN" or "MIDI" (in the latter case, call AX=0701h to
  6554.       determine whether IBMSND is installed)
  6555. SeeAlso: AX=068Bh,AX=068Fh,AX=0701h
  6556.  
  6557. Format of IBMSND driver SNDSTRUC:
  6558. Offset    Size    Description    (Table 2125)
  6559.  00h    DWORD    -> audio data
  6560.  04h    WORD    length of audio data in bytes
  6561.  06h    DWORD    -> playback status flag
  6562.  0Ah    WORD    playback frequency
  6563. --------s-660689-----------------------------
  6564. INT 66 - IBMSND driver - REPORT SOUND DRIVER STATUS
  6565.     AX = 0689h
  6566. Return: AX = status
  6567.         0000h no sound playing
  6568.         0001h sound effect is currently playing
  6569. SeeAlso: AX=0688h,AX=068Bh,AX=068Ch
  6570. --------s-66068A-----------------------------
  6571. INT 66 - IBMSND driver - PREFORMAT SOUND
  6572.     AX = 068Ah
  6573.     DS:SI -> SNDSTRUC (see #2125)
  6574. Desc:    convert audio data into output hardware format
  6575. SeeAlso: AX=068Bh
  6576. --------s-66068B-----------------------------
  6577. INT 66 - IBMSND driver - PLAY PREFORMATTED SOUND
  6578.     AX = 068Bh
  6579.     DS:SI -> SNDSTRUC (see #2125)
  6580. Return: AX = ???
  6581. SeeAlso: AX=0688h,AX=068Ah,AX=068Fh
  6582. --------s-66068C-----------------------------
  6583. INT 66 - IBMSND driver - REPORT AUDIO DRIVER CAPABILITIES
  6584.     AX = 068Ch
  6585. Return: AX = capabilities (see #2126)
  6586.     DX = playback rate if fixed-frequency playback
  6587. SeeAlso: AX=0689h,AX=068Dh
  6588.  
  6589. Bitfields for IBMSND driver capabilities:
  6590. Bit(s)    Description    (Table 2126)
  6591.  0    can play audio in background
  6592.  1    data is massaged
  6593.  2    driver plays at fixed frequency, resampling input data to fit
  6594.  3    driver uses timer interrupt
  6595. --------s-66068D-----------------------------
  6596. INT 66 - IBMSND driver - REPORT CURRENT SAMPLE ADDRESS
  6597.     AX = 068Dh
  6598. Return: AX = current playback address
  6599. Desc:    determine what point in the audio data the playback has reached, for
  6600.       synchronization with video or animation effects
  6601. Notes:    this function applies to background playback only
  6602.     the reported address may be an approximation rather than the exact
  6603.       address
  6604. SeeAlso: AX=068Ch,AX=0691h
  6605. --------s-66068E-----------------------------
  6606. INT 66 - IBMSND driver - SET CALLBACK ADDRESS
  6607.     AX = 068Eh
  6608.     BX:DX -> callback function
  6609.         0000h:0000h to disable callback
  6610.     DS = value to load into DS when calling the callback function
  6611. Desc:    specify the function to be called when playback of a sound effect is
  6612.       completed
  6613. Note:    the callback function will typically be called during a hardware
  6614.       interrupt, so all the usual precautions should be taken except for
  6615.       preserving registers
  6616. SeeAlso: AX=0691h
  6617. --------s-66068F-----------------------------
  6618. INT 66 - IBMSND driver - STOP CURRENT SOUND
  6619.     AX = 068Fh
  6620. Desc:    cause any currently-playing sound effect to be terminated
  6621. SeeAlso: AX=0688h,AX=068Bh
  6622. --------s-660690-----------------------------
  6623. INT 66 - IBMSND driver - "SetAudioHardware" SET UP HARDWARE INFO [obsolete]
  6624.     AX = 0690h
  6625. Note:    this function is no longer implemented
  6626. --------s-660691-----------------------------
  6627. INT 66 - IBMSND driver - REPORT CALLBACK ADDRESS
  6628.     AX = 0691h
  6629. Return: AX:DX -> current callback function
  6630.     BX = original caller's DS register
  6631. Program: The IBMSND driver is part of John W. Ratcliff's
  6632.        The IBM Digitized Sound Package
  6633. SeeAlso: AX=068Eh
  6634. --------s-660701-----------------------------
  6635. INT 66 - IBM Digitized Sound Package MIDI driver - GET DIGITIZED SOUND CAPABIL
  6636.     AX = 0701h
  6637. Return: AX = digitized sound capabilities
  6638.         0000h if digitized sound driver (functions 06xxh) not available
  6639. Note:    the installation check for the MIDI driver is to test for the signature
  6640.       "MIDI" six bytes before the interrupt handler
  6641. SeeAlso: AX=0688h
  6642. --------n-6610-------------------------------
  6643. INT 66 - PenDOS - TDMOUSE.EXE - GET ???
  6644.     AH = 10h
  6645. Return: CF clear
  6646.     AX = 0000h
  6647.     BX = ??? (0012h)
  6648.     DX:CX -> TDMOUSE INT 33 handler (IRET to hide mouse from other apps)
  6649. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  6650.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  6651.       Corporation which makes applications pen-aware
  6652. --------n-6611-------------------------------
  6653. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  6654.     AH = 11h
  6655.     DX:BX -> new handler for ???
  6656. Return: CF clear
  6657.     AX = 0000h
  6658.     DX:BX -> old handler for ??? (points at RETF by default)
  6659. --------n-6612-------------------------------
  6660. INT 66 - PenDOS - TDMOUSE.EXE - INITIALIZE
  6661.     AH = 12h
  6662. Return:    CF clear
  6663.     AX = 0000h
  6664. Note:    this function calls the old mouse handler with functions 0000h, 0002h,
  6665.       0007h, 0008h, 000Fh, 0004h, and 000Ch (in that order)
  6666. SeeAlso: AH=13h
  6667. --------n-6613-------------------------------
  6668. INT 66 - PenDOS - TDMOUSE.EXE - SHUTDOWN???
  6669.     AH = 13h
  6670. Return: CF clear
  6671.     other register as returned by INT 33/AX=0000h
  6672. SeeAlso: AH=12h
  6673. --------n-6614-------------------------------
  6674. INT 66 - PenDOS - TDMOUSE.EXE - ???
  6675.     AH = 14h
  6676.     BX = ???
  6677.     CX = ???
  6678. Return: CF clear
  6679.     AX = 0000h
  6680. --------n-6615-------------------------------
  6681. INT 66 - PenDOS - TDMOUSE.EXE - SET ??? HANDLER
  6682.     AH = 15h
  6683.     DX:BX -> new handler for ???
  6684. Return: CF clear
  6685.     AX = 0000h
  6686.     DX:BX -> old handler (points at RETF by default)
  6687. --------n-6616-------------------------------
  6688. INT 66 - PenDOS - TDMOUSE.EXE - UNUSED FUNCTIONS
  6689.     AH = 16h to 1Fh
  6690. Return: CF set
  6691. Program: TDMOUSE is a PenDOS hardware driver which allows a mouse to emulate
  6692.       a touchpad; PenDOS is a set of programs by Communication Intelligence
  6693.       Corporation which makes applications pen-aware
  6694. --------n-6621-------------------------------
  6695. INT 66 - PenDOS - PINK - ???
  6696.     AH = 21h
  6697. Return: CF clear if successful
  6698.     CF set on error
  6699. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  6700. --------n-6622-------------------------------
  6701. INT 66 - PenDOS - PINK - ???
  6702.     AH = 22h
  6703.     DX:BX -> ???
  6704.     CL = ???
  6705. Return: CF clear if successful
  6706.     CF set on error
  6707.     ???
  6708. SeeAlso: AH=24h
  6709. --------n-6623-------------------------------
  6710. INT 66 - PenDOS - PINK - ???
  6711.     AH = 23h
  6712.     ???
  6713. Return: CF clear if successful
  6714.     CF set on error
  6715.     ???
  6716. --------n-6624-------------------------------
  6717. INT 66 - PenDOS - PINK - ???
  6718.     AH = 24h
  6719.     DX:BX -> ???
  6720.     CL = ???
  6721. Return: CF clear if successful
  6722.     CF set on error
  6723.     ???
  6724. SeeAlso: AH=22h
  6725. --------n-6625-------------------------------
  6726. INT 66 - PenDOS - PINK - ???
  6727.     AH = 25h
  6728.     CL = ??? (NOP if 00h)
  6729.     ???
  6730. Return: CF clear if successful
  6731.     CF set on error
  6732.     ???
  6733. --------n-6627-------------------------------
  6734. INT 66 - PenDOS - PINK - ???
  6735.     AH = 27h
  6736.     BL = ???
  6737.     BH = ???
  6738.     CL = ??? (0-3)
  6739.     DL = ??? (> BL)
  6740.     DH = ??? (> BH)
  6741. Return: ???
  6742. --------n-6628-------------------------------
  6743. INT 66 - PenDOS - PINK - ???
  6744.     AH = 28h
  6745.     ???
  6746. Return: CF clear if successful
  6747.     CF set on error
  6748.     ???
  6749. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  6750. --------n-6629-------------------------------
  6751. INT 66 - PenDOS - PINK - ???
  6752.     AH = 29h
  6753.     ???
  6754. Return: ???
  6755. Note:    this function sets ??? flag or counter (also set by AH=2Fh) to FFFFh
  6756. --------n-662A-------------------------------
  6757. INT 66 - PenDOS - PINK - ???
  6758.     AH = 2Ah
  6759.     DL = ??? (nonzero)
  6760.     DH = ??? (nonzero)
  6761. Return: CF clear if successful
  6762.     CF set on error
  6763.     ???
  6764. --------n-662B-------------------------------
  6765. INT 66 - PenDOS - PINK - ???
  6766.     AH = 2Bh
  6767.     ???
  6768. Return: CF clear if successful
  6769.     CF set on error
  6770.     ???
  6771. --------n-662F-------------------------------
  6772. INT 66 - PenDOS - PINK - INITIALIZE
  6773.     AH = 2Fh
  6774.     ???
  6775. Return: AX = status
  6776.         0000h failed
  6777.         FFFFh successful
  6778.     ???
  6779. Note:    this function sets ??? flag or counter to FFFFh and hooks INT 1Ch
  6780. --------F-663345-----------------------------
  6781. INT 66 - BitFax Scheduler - REMOVE TSR FROM MEMORY
  6782.     AX = 3345h
  6783. Return: AX = FFFFh error removing TSR
  6784. Note:    the installation check consists of checking for the signature
  6785.       "BitFax Scheduler" beginning two bytes past the interrupt handler
  6786. SeeAlso: AH=04h,INT 2F/AH=2Ah,INT 2F/AX=CB00h
  6787. Index:    installation check;BitFax Scheduler
  6788. --------n-6640-------------------------------
  6789. INT 66 - PenDOS - PKEYUS - GET VERSION
  6790.     AH = 40h
  6791. Return: CF clear
  6792.     AX = 0000h
  6793.     BH = major version (02h for version bundled with IBM DOS 6.1)
  6794.     BL = minor version (00h for version bundled with IBM DOS 6.1)
  6795.     DL = ??? (4Eh)
  6796.     DH = ??? (0Eh)
  6797. --------n-6641-------------------------------
  6798. INT 66 - PenDOS - PKEYUS - SET ???
  6799.     AH = 41h
  6800.     BX = ???
  6801.     CL = ??? (08h-20h)
  6802.     DL = screen column??? (<= 50h)
  6803.     DH = screen row???  (<= 3Ch)
  6804. Return: AX = status (0000h successful, 0001h error)
  6805. Note:    this function also sets an internal flag
  6806. SeeAlso: AH=42h,AH=43h
  6807. --------n-6642-------------------------------
  6808. INT 66 - PenDOS - PKEYUS - ???
  6809.     AH = 42h
  6810. Return: CF clear
  6811.     AX = 0000h
  6812. Note:    this function also clears the flag set by AH=41h
  6813. SeeAlso: AH=41h
  6814. --------n-6643-------------------------------
  6815. INT 66 - PenDOS - PKEYUS - ???
  6816.     AH = 43h
  6817.     BX = ???
  6818.     DX = ???
  6819. Return: AX = status
  6820.         0000h if AH=41h flag set
  6821.         else
  6822.         AH = ???
  6823.         AL = ???
  6824.         BX = ???
  6825.         DX = ???
  6826. SeeAlso: AH=41h    
  6827. --------n-6644-------------------------------
  6828. INT 66 - PenDOS - PKEYUS - UNUSED FUNCTIONS
  6829.     AH = 44h to 4Fh
  6830. Return: CF set
  6831. --------n-6650-------------------------------
  6832. INT 66 - PenDOS - PMOUSE - SET ???
  6833.     AH = 50h
  6834.     BX = ???
  6835.     CH = ???
  6836.     DX = ???
  6837. Return: CF clear
  6838.     AX = 0000h
  6839. --------n-6651-------------------------------
  6840. INT 66 - PenDOS - PMOUSE - NOP
  6841.     AH = 51h
  6842. Return: CF set
  6843. --------n-6652-------------------------------
  6844. INT 66 - PenDOS - PMOUSE - ???
  6845.     AH = 52h
  6846.     BX = ???
  6847.     CL = ???
  6848.     DX = ???
  6849. Return: ???
  6850. --------n-6653-------------------------------
  6851. INT 66 - PenDOS - PMOUSE - UNUSED FUNCTIONS
  6852.     AH = 53h to 57h
  6853. Return: CF set
  6854. --------n-66---------------------------------
  6855. INT 66 - PenDOS - PMOUSE - ALTERNATE API
  6856.     AH = function (58h-5Fh)
  6857. Note:    these functions exactly duplicate AH=50h-57h
  6858. ----------66AA02-----------------------------
  6859. INT 66 - HelpTSR v2.10 - INSTALLATION CHECK
  6860.     AX = AA02h
  6861. Return: ES:DI -> 7 byte signature "HelpTSR" if resident
  6862. Program: HelpTSR is a resident viewer by David Jurgens for HelpPC
  6863. --------n-66C5-------------------------------
  6864. INT 66 - PenDOS - VLOAD - API
  6865.     AH = C5h
  6866.     ???
  6867. Return: ???
  6868. --------t-66FFFBBXFFFB-----------------------
  6869. INT 66 - MicroHelp Stay-Res Plus - ???
  6870.     AX = FFFBh
  6871.     BX = FFFBh
  6872.     ???
  6873. Return: ???
  6874. SeeAlso: AX=FFFEh,INT 2D"AMIS"
  6875. --------t-66FFFEBXFFFE-----------------------
  6876. INT 66 - MicroHelp Stay-Res/Stay-Res Plus - UNINSTALL
  6877.     AX = FFFEh
  6878.     BX = FFFEh
  6879. Return: only if unsuccessful
  6880. Notes:    installation check is for the interrupt handler to begin with the bytes
  6881.       FBh 9Ch or 9Ch FAh, and the program name (not case-sensitive) to
  6882.       appear at offset 0005h (older versions) or the offset returned by
  6883.       AX=FFFFh/BX=FFF0h in the interrupt handler segment.
  6884.     Programs which use Stay-Res include ThesPlus (program name "THESPLUS")
  6885.       and Personal Calendar (program name "CAL") by Paul Mun~oz-Colman.
  6886. SeeAlso: AX=FFFBh,AX=FFFFh,INT 2D"AMIS"
  6887. Index:    installation check;MicroHelp Stay-Res|installation check;ThesPlus
  6888. Index:    installation check;Personal Calendar|installation check;CAL
  6889. --------t-66FFFFBXFFF0-----------------------
  6890. INT 66 - MicroHelp Stay-Res Plus - FIND PROGRAM NAME
  6891.     AX = FFFFh
  6892.     BX = FFF0h
  6893. Return: DI = offset of program name in interrupt handler segment
  6894. SeeAlso: AX=FFFBh,AX=FFFEh,INT 2D"AMIS"
  6895. --------d-67---------------------------------
  6896. INT 67 - Adaptec controllers - DRIVE 1 DATA
  6897. Desc:    this vector stores the last four bytes of the parameter table for
  6898.       hard disk 1
  6899. SeeAlso: INT 64"Adaptec",INT 65"Adaptec",INT 66"Adaptec"
  6900. --------b-67---------------------------------
  6901. INT 67 - TI Professional PC - SYSTEM DATA (NOT A VECTOR!)
  6902. Desc:    this vector contains the TI Pro's system configuration words
  6903.       (see #2127)
  6904. SeeAlso: INT 66"TI Professional PC"
  6905.  
  6906. Bitfields for TI Professional PC System Configuration doubleword:
  6907. Bit(s)    Description    (Table 2127)
  6908.  0    8087 present
  6909.  31-1    reserved (0)
  6910. --------d-67---------------------------------
  6911. INT 67 - Pdisk by Scott Garfinkle - Overwritten for Hard Drive information
  6912. SeeAlso: INT 64"Pdisk",INT 66"Pdisk"
  6913. --------I-67---------------------------------
  6914. INT 67 - Sangoma CCPOP 3270 resident module
  6915. SeeAlso: INT 61"Sangoma",INT 68"Sangoma"
  6916. --------U-67---------------------------------
  6917. INT 67 - CUCKOO.COM - INSTALLATION CHECK
  6918. Program: CUCKOO is a resident on-screen clock with optional hourly chime or
  6919.       cuckoo by an unknown author with revisions by Thomas A. Lundin
  6920. Note:    this is not a vector; when loaded for the first time, CUCKOO.COM uses
  6921.       the last unused (0000h:0000h) vector in the range 60h-67h to store
  6922.       the signature value 434Ch:4F4Bh ('CLOK')
  6923. --------N-6700-------------------------------
  6924. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE AND WAIT
  6925.     AH = 00h
  6926.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6927. Return: AL = status (see #2128)
  6928.     AH = semaphore owner if status=02h
  6929. SeeAlso: AH=01h,AH=02h"PC-NET",INT 7F/AH=00h
  6930.  
  6931. (Table 2128)
  6932. Values for PC-NET semaphore function status:
  6933.  00h    successful
  6934.  01h    invalid function
  6935.  02h    semaphore already locked
  6936.  03h    unable to lock semaphore
  6937.  04h    semaphore space exhausted
  6938. --------N-6701-------------------------------
  6939. INT 67 - PC-NET, Alloy NTNX - LOCK SEMAPHORE
  6940.     AH = 01h
  6941.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6942. Return: AL = status (see #2128)
  6943.     AH = semaphore owner if status=02h
  6944. SeeAlso: AH=00h,AH=02h"PC-NET",INT 7F/AH=01h"Alloy"
  6945. --------N-6702-------------------------------
  6946. INT 67 - PC-NET, Alloy NTNX - UNLOCK SEMAPHORE
  6947.     AH = 02h
  6948.     DS:DX -> ASCIZ semaphore name (max 64 bytes)
  6949. Return: AL = status (see #2128)
  6950.     AH = semaphore owner if status=02h
  6951. SeeAlso: AH=00h,AH=01h"PC-NET",INT 7F/AH=02h
  6952. --------m-671E-------------------------------
  6953. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - INSTALLATION CHECK
  6954.     AH = 1Eh
  6955. Return: AH = 00h if installed
  6956.         AL destroyed
  6957.         ES:DI -> ASCII signature "MemLimit"
  6958. SeeAlso: AH=1Fh,INT 21/AX=4402h"386MAX"
  6959. --------m-671F-------------------------------
  6960. INT 67 U - Qualitas 386MAX v7.00 - MEMLIMIT - API
  6961.     AH = 1Fh
  6962.     DS:SI -> request packet (see #2129)
  6963. Return: AH = status (00h successful, 84h invalid function code, etc.)
  6964. SeeAlso: AH=1Eh
  6965.  
  6966. Format of 386MAX MEMLIMIT request packet:
  6967. Offset    Size    Description    (Table 2129)
  6968.  00h    WORD    function code (00h-0Fh)
  6969.  02h    WORD    return code (see #2130)
  6970.  04h  4 BYTEs    ???
  6971.  08h    WORD    ???
  6972.     ???
  6973.  
  6974. (Table 2130)
  6975. Values for 386MAX MEMLIMIT return code:
  6976.  00h    unknown request
  6977.  01h    invalid parameter for VCPI limit
  6978.  02h    VCPI limit set
  6979.  03h    invalid parameter for EMS limit
  6980.  04h    EMS limit set
  6981.  05h    DPMI disabled
  6982.  06h    XMS disabled
  6983.  07h    XMS limit set
  6984.  08h    unable to uninstall
  6985.  09h    unloaded
  6986. --------m-673F--CX5145-----------------------
  6987. INT 67 U - QEMM-386 v4.23+ - INSTALLATION CHECK
  6988.     AH = 3Fh
  6989.     CX = 5145h ("QE")
  6990.     DX = 4D4Dh ("MM")
  6991. Return: AH = 00h if installed
  6992.         ES:DI -> QEMM API entry point (see #2131,#2134,#2245)
  6993. Notes:    if no other program has hooked INT 67, an alternate installation
  6994.       check is to test for the string
  6995.       "QUARTERDECK EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  6996.       handler's segment; the word at offset 12h contains the offset in
  6997.       the handler's segment of the API entry point
  6998.     although this function is still undocumented, Quarterdeck has recently
  6999.       documented two alternate methods for determining the QEMM API entry
  7000.       point, as well as several of the API functions
  7001.     MICEMM (Micronics Expanded Memory Manager) versions 2.0C and 4D support
  7002.       the alternate QEMM installation check and entry point functions 00h,
  7003.       02h, and 03h; version 4D only provides the signature string if the
  7004.       commandline argument "DV" is provided
  7005.     386MAX v6.01 responds to this call, but DESQview 2.42 does not
  7006.       recognize the returned entry point as providing QEMM's capabilities
  7007.       because a) only functions 0Ch (different from QEMM 0Ch) and
  7008.             1000h-1009h are supported,
  7009.           b) status is returned as for EMS functions, not QEMM funcs
  7010.           c) the protected-mode entry point returned by function 1000h
  7011.             only supports functions 0Ch, 1004h, 1005h, and 100Ah
  7012.     the string check mentioned above is not supported by 386MAX
  7013. SeeAlso: AX=5BF0h,AH=DDh,AX=FFA5h,INT 15/AX=11DEh,INT 21/AX=4402h/SF=01h
  7014. SeeAlso: INT 21/AX=4402h"QEMM",INT 21/AX=4402h"386MAX",INT 2F/AX=D201h/BX=5145h
  7015.  
  7016. (Table 2131)
  7017. Values for calling QEMM "QPI_GetStatus" function:
  7018.     AH = 00h get QEMM state
  7019. Return: CF clear
  7020.     AL = QEMM state
  7021.         bit 0 set if QEMM turned OFF
  7022.         bit 1 set if in "Auto" mode
  7023. Note:    this function is officially documented
  7024. SeeAlso: #2132,#2133,#2134,#2245
  7025.  
  7026. (Table 2132)
  7027. Values for calling QEMM "QPI_SetStatus" function:
  7028.     AH = 01h set QEMM state
  7029.     AL = new state
  7030.         bit 0 set: place QEMM in OFF state
  7031. Return: CF clear if successful
  7032.     CF set on error
  7033. Note:    this function is officially documented
  7034. SeeAlso: #2131
  7035.  
  7036. (Table 2133)
  7037. Values for calling QEMM QPI function 02h:
  7038.     AH = 02h get ???
  7039. Return: CF clear
  7040.     AX = segment of ??? data structure
  7041.     Data Structure
  7042.     Offset    Size    Description
  7043.      00h    DWORD    page table entry for ???
  7044.         ???
  7045. SeeAlso: #2134
  7046.  
  7047. (Table 2134)
  7048. Values for calling QEMM "QPI_GetVersion" function:
  7049.     AH = 03h get QEMM version
  7050. Return: CF clear
  7051.     AX = BX = version in BCD
  7052. Notes:    this function is officially documented.     The most recent official docs
  7053.       state that the version is returned in both AX and BX; older
  7054.       documentation only mentions BX
  7055.     MICEMM returns AX=0001h, BX unchanged
  7056. SeeAlso: #2131,#2135
  7057.  
  7058. (Table 2135)
  7059. Values for calling QEMM QPI function 04h:
  7060.     AH = 04h allocate 4K page and set AUTO/ON mode
  7061. Return: CF clear if successful
  7062.         DX = page number of a 4K page
  7063.     CF set if unable to allocate page
  7064. Note:    QEMM mode unchanged if not AUTO/OFF
  7065. SeeAlso: #2136
  7066.  
  7067. (Table 2136)
  7068. Values for calling QEMM QPI function 05h:
  7069.     AH = 05h free 4K page and turn QEMM off
  7070.     DX = page number returned by function 04h
  7071. Return: CF clear
  7072. Note:    QEMM mode unchanged if not AUTO/ON
  7073. SeeAlso: #2135,#2137
  7074.  
  7075. (Table 2137)
  7076. Values for calling QEMM QPI function 06h:
  7077.     AH = 06h make new mapping context???
  7078.     DX = page number of 4K page to hold page table
  7079. Return: CF clear
  7080. Note:    copies page table into given page and then sets ??? page table entry
  7081.       to point at copy
  7082. SeeAlso: #2138,#2139
  7083.  
  7084. (Table 2138)
  7085. Values for calling QEMM QPI function 07h:
  7086.     AH = 07h get mapping context
  7087. Return: CF clear
  7088.     DX = page number of page table for current mapping context
  7089. SeeAlso: #2134,#2137,#2139
  7090.  
  7091. (Table 2139)
  7092. Values for calling QEMM QPI function 08h:
  7093.     AH = 08h set mapping context???
  7094.     DX = linear page number of page table
  7095. Return: CF clear
  7096. SeeAlso: #2134,#2137,#2138,#2140,#2142
  7097.  
  7098. (Table 2140)
  7099. Values for calling QEMM QPI function 09h:
  7100.     AH = 09h get linear page number for page table entry
  7101.     CX = page table index
  7102. Return: CF clear
  7103.     DX = linear page number
  7104. SeeAlso: #2141
  7105.  
  7106. (Table 2141)
  7107. Values for calling QEMM QPI function 0Ah:
  7108.     AH = 0Ah set linear page number for page table entry
  7109.     CX = page table index
  7110.     DX = linear page number
  7111. Return: CF clear
  7112. SeeAlso: #2140
  7113.  
  7114. (Table 2142)
  7115. Values for calling QEMM QPI function 0Bh:
  7116.     AH = 0Bh map 4K pages
  7117.     BX = number of pages
  7118.     CX = first page number (must be 0100h to allocate HMA)
  7119.     DX = EMS handle (memory belonging to EMS handle will be mapped
  7120.           into the address space beginning with the first page
  7121.           allocated to the handle)
  7122. Return: AH = 00h
  7123. SeeAlso: #2139,#2143
  7124.  
  7125. (Table 2143)
  7126. Values for calling QEMM QPI function 0Ch:
  7127.     AH = 0Ch get available memory
  7128. Return: CF clear
  7129.     BX = 0001h
  7130.     CX = total 4K pages???
  7131.     DX = number of 4K pages free
  7132. SeeAlso: #2142,#2144
  7133.  
  7134. (Table 2144)
  7135. Values for calling QEMM QPI function 0Dh:
  7136.     AH = 0Dh CRT controller I/O port trapping
  7137.     AL = mode
  7138.         00h only trap on I/O ports 03C0h-03C5h, 03C7h, 03CAh-03CFh
  7139.         01h trap on ports 03B4h, 03B5h, 03B8h, 03C6h, 03C8h, 03C9h,
  7140.           03D4h, and 03D5h
  7141.         02h only trap on I/O ports 03C6h, 03C8h, and 03C9h
  7142. Return: CF clear
  7143.  
  7144. (Table 2145)
  7145. Values for calling QEMM QPI function 0Eh:
  7146.     AH = 0Eh set cursor virtualization callbacks
  7147.     DS:BX -> FAR routine for getting hardware cursor address
  7148.     ES:DX -> FAR routine for setting hardware cursor address
  7149. Return: CF clear
  7150. Note:    both callbacks are invoked with CL indicating which
  7151.       CRT controller register to access (0Eh for high
  7152.       byte of cursor address, 0Fh for low byte)
  7153.     the DS:BX callback should return BX=cursor address;
  7154.       ES:DX is called with BL or BH (depending on CL)
  7155.       set to the appropriate half of the cursor's address
  7156.  
  7157. (Table 2146)
  7158. Values for calling QEMM QPI function 0Fh:
  7159.     AH = 0Fh unmap 4K pages
  7160.     CX = first page number
  7161.     DX = number of pages
  7162. Return: CF clear
  7163.     AL = 00h/01h if ???
  7164. Note:    if CX=0100h and DX=0010h, the HMA is remapped to
  7165.       simulate a disabled A20
  7166.  
  7167. (Table 2147)
  7168. Values for calling QEMM QPI function 1000h:
  7169.     AX = 1000h get protected-mode interface
  7170.     DS:SI -> 16-byte buffer for two GDT entries
  7171.     ES:DI -> buffer for 4K page table
  7172. Return: CF clear
  7173.     EAX = offset of protected-mode API entry point
  7174.     DS:SI buffer filled with two GDT descriptors
  7175.         first is QEMM code segment, second is data???
  7176.     ES:DI buffer filled with 4K page table
  7177.     DI points to first unused page table entry
  7178. SeeAlso: INT 67/AX=DE01h
  7179.  
  7180. (Table 2148)
  7181. Values for calling QEMM QPI function 1001h:
  7182.     AX = 1001h get CPU debug registers
  7183.     ES:DI -> buffer for debug registers (8 DWORDs)
  7184. Return: CF clear
  7185.     BL = INT01 handling (see function 1002h)
  7186.     ES:DI buffer filled
  7187.  
  7188. (Table 2149)
  7189. Values for calling QEMM QPI function 1002h:
  7190.     AX = 1002h set CPU debug registers
  7191.     BL = INT01 handling
  7192.         00h     reflect all debugging exceptions as V86-mode INT 01's
  7193.         else convert debugging exceptions other than single-step
  7194.           into V86-mode INT 03's, single-step to INT 01's
  7195.     ES:DI -> buffer containing debug registers (8 DWORDs)
  7196. Return: CF clear
  7197. Notes:    identical to INT 67/AX=DE09h if BL=01h
  7198.     the INT01 handling flag is set to 01h by the general-protection
  7199.       violation handler for certain privileged instructions
  7200.  
  7201. (Table 2150)
  7202. Values for calling QEMM QPI function 1003h:
  7203.     AX = 1003h get machine status word CR0
  7204. Return: CF clear
  7205.     EAX = contents of CR0
  7206. SeeAlso: INT 67/AX=DE07h
  7207.  
  7208. (Table 2151)
  7209. Values for calling QEMM QPI function 1004h:
  7210.     AX = 1004h allocate a 4K page
  7211. Return: CF clear if successful
  7212.         EDX = linear address of allocated page
  7213.     CF set on error
  7214. SeeAlso: INT 67/AX=DE04h
  7215.  
  7216. (Table 2152)
  7217. Values for calling QEMM QPI function 1005h:
  7218.     AX = 1005h free 4K page
  7219.     EDX = linear address of page to free
  7220. Return: CF clear
  7221. SeeAlso: INT 67/AX=DE05h
  7222.  
  7223. (Table 2153)
  7224. Values for calling QEMM QPI function 1006h:
  7225.     AX = 1006h NOP
  7226. Return: CF set
  7227.  
  7228. (Table 2154)
  7229. Values for calling QEMM QPI function 1007h:
  7230.     AX = 1007h get maximum physical memory address
  7231. Return: CF clear
  7232.     EDX = physical address of highest 4K memory page
  7233. SeeAlso: INT 67/AX=DE02h
  7234.  
  7235. (Table 2155)
  7236. Values for calling QEMM QPI function 1008h:
  7237.     AX = 1008h get physical address of page in first megabyte
  7238.     CX = page number (linear address shifted right 12 bits)
  7239. Return: CF clear
  7240.     EDX = linear address of page
  7241. SeeAlso: function 1F00h
  7242.  
  7243. (Table 2156)
  7244. Values for calling QEMM QPI function 1009h:
  7245.     AX = 1009h switch to protected mode
  7246.     ESI = linear address in first megabyte of system reg values
  7247.           (see INT 67/AX=DE0Ch)
  7248.     interrupts disabled
  7249. Return: interrupts disabled
  7250.     GDTR, IDTR, LDTR, TR loaded
  7251.     SS:ESP must have at least 16 bytes space, and the
  7252.           entry point is required to set up a new stack
  7253.           before enabling interrupts
  7254.     EAX, ESI, DS, ES, FS, GS destroyed
  7255.  
  7256. (Table 2157)
  7257. Values for calling QEMM QPI function 100Ah:
  7258.     AX = 100Ah switch back to virtual-86 mode
  7259.     DS = selector for data segment from function 1000h
  7260.     SS:ESP in first megabyte of linear memory
  7261.     interrupts disabled
  7262.     STACK:    QWORD  return address from FAR call to 32-bit segment
  7263.         DWORD  EIP
  7264.         DWORD  CS
  7265.         DWORD  reserved for EFLAGS
  7266.         DWORD  ESP
  7267.         DWORD  SS
  7268.         DWORD  ES
  7269.         DWORD  DS
  7270.         DWORD  FS
  7271.         DWORD  GS
  7272.     will switch to virtual86 mode with interrupts disabled, all
  7273.       segment registers loaded, and EAX destroyed.
  7274.  
  7275. (Table 2158)
  7276. Values for calling QEMM QPI function 11h:
  7277.     AH = 11h get memory type map
  7278.     AL = zero/nonzero ??? (set by QEMM.COM but apparently ignored
  7279.           by QEMM 6.00)
  7280.     ES:DI -> 256-byte buffer for memory types
  7281. Return: CF clear
  7282.     BL = ???
  7283.     ES:DI buffer filled
  7284. Note:    each byte of the buffer corresponds to a 4K page, and
  7285.       contains the type of that page: 00h = mappable,
  7286.       02h = mapped ROM, 03h = high RAM, 04h = excluded,
  7287.       05h = video, 06h = ROM, 07h = adapter ROM,
  7288.       08h = split ROM, 09h = page frame, 0Ah = RAMmable,
  7289.       0Bh = conventional, 83h = high RAM under MS Windows
  7290.  
  7291. (Table 2159)
  7292. Values for calling QEMM QPI function 12h:
  7293.     AH = 12h get HIRAM chain
  7294. Return: CF clear
  7295.     BX = segment of first MCB in high memory
  7296.         0000h if no high memory
  7297.  
  7298. (Table 2160)
  7299. Values for calling QEMM QPI function 1300h:
  7300.     AX = 1300h VIDRAMEGA???
  7301.     BL = 00h copy ???
  7302.          nonzero copy ??? (reverse)
  7303. Return: CF clear
  7304.     AL = status
  7305.         00h if all pages clean
  7306.         01h if any page dirty
  7307.  
  7308. (Table 2161)
  7309. Values for calling QEMM QPI function 1301h:
  7310.     AX = 1301h check if pages modified
  7311.     DX:DI = start address of range to check
  7312.     CX = length of range in paragraphs
  7313. Return: CF clear
  7314.     CX = status
  7315.         0000h none of the indicated pages is dirty
  7316.         DI destroyed
  7317.         1000h one or more pages is dirty
  7318.         DI = low word of first dirty page's linear addr
  7319.  
  7320. (Table 2162)
  7321. Values for calling QEMM QPI function 1302h:
  7322.     AX = 1302h ???
  7323.     BL = ???
  7324.     BH = ???
  7325.     CX = ???
  7326.     SI = offset of ???
  7327.     DI = offset of ???
  7328.     ???
  7329. Return: CF clear
  7330.     ???
  7331. Note:    disables certain interrupts at the two 8259 PICs during
  7332.       execution; also modifies CRT controller during
  7333.       execution under certain circumstances
  7334.  
  7335. (Table 2163)
  7336. Values for calling QEMM QPI function 1303h:
  7337.     AX = 1303h initialize EGA graphics virtualization
  7338.     BX = number of pages (less 1) of EMS to allocate
  7339. Return: CF clear if successful
  7340.         DX = EMS handle
  7341.     CF set on error
  7342.  
  7343. (Table 2164)
  7344. Values for calling QEMM QPI function 1304h:
  7345.     AX = 1304h shutdown EGA graphics virtualization
  7346.     DX = EMS handle being used for virtualization
  7347. Return: CF clear
  7348.  
  7349. (Table 2165)
  7350. Values for calling QEMM QPI function 1305h:
  7351.     AX = 1305h select portion of EGA graphics to virtualize???
  7352.     (related to graphics virtualization, changes memory mappings)
  7353.     CX = start offset within A000h segment of virtualized mem???
  7354. Return: CF clear
  7355. Note:    disables certain interrupts at the two 8259 PICs during
  7356.       execution (see func 130Ch) and runs inside a QEMM
  7357.       critical section
  7358.  
  7359. (Table 2166)
  7360. Values for calling QEMM QPI function 1306h:
  7361.     AX = 1306h set DESQview critical section counter address
  7362.     ES:BX -> WORD DESQview critical section counter or 0000h:0000h
  7363. Return: CF clear
  7364. Note:    also sets a pointer in the low-memory part of QEMM to
  7365.       the current value of INT 15 if ES:BX not 0000h:0000h
  7366.  
  7367. (Table 2167)
  7368. Values for calling QEMM QPI function 1307h:
  7369.     AX = 1307h ??? (changes memory mappings for entire A000h segment)
  7370. Return: CF clear
  7371. Note:    disables certain interrupts at the two 8259 PICs during
  7372.       execution (see func 130Ch) and runs inside a QEMM
  7373.       critical section
  7374.  
  7375. (Table 2168)
  7376. Values for calling QEMM QPI function 1308h:
  7377.     AX = 1308h start/reset CRT controller I/O trapping
  7378.     BL = subfunction
  7379.         00h restore CRTC I/O port trapping to previous state
  7380.         else start trapping all accesses to I/O ports 03B0-03DF
  7381. Return: CF clear
  7382. Note:    if called more than once in a row with BL nonzero, the
  7383.       original state of the I/O port trapping will be lost
  7384.  
  7385. (Table 2169)
  7386. Values for calling QEMM QPI function 1309h:
  7387.     AX = 1309h Hercules mode-change support
  7388.     ES:BX -> new address for Hercules mode-change callback
  7389. Return: CF clear
  7390. Note:    the callback function is called whenever the CRTC mode
  7391.       register is written, with AL set to the value written
  7392.  
  7393. (Table 2170)
  7394. Values for calling QEMM QPI function 130Ah:
  7395.     AX = 130Ah virtualize EGA/VGA DAC registers (I/O ports 03C8h/03C9h)
  7396.     CX:DX -> DAC register virtualization buffer (see #2252)
  7397.         or 0000h:0000h to disable
  7398. Return: CF clear
  7399.  
  7400. (Table 2171)
  7401. Values for calling QEMM QPI function 130Bh:
  7402.     AX = 130Bh ???
  7403.     BL = ??? (??? or 00h)
  7404. Return: CF clear
  7405.     ???
  7406. Note:    calls AX=130Eh in some cases
  7407.  
  7408. (Table 2172)
  7409. Values for calling QEMM QPI function 130Ch:
  7410.     AX = 130Ch set interrupts to mask
  7411.     BX = interrupts to mask out during AX=1302h,AX=1307h,AX=1308h,
  7412.           AX=130Dh,AX=1310h (BL = master PIC, BH = slave PIC)
  7413. Return: CF clear
  7414.  
  7415. (Table 2173)
  7416. Values for calling QEMM QPI function 130Dh:
  7417.     AX = 130Dh map EGA memory at A0000h
  7418.     ???
  7419. Return: CF clear
  7420. Note:    disables certain interrupts at the two 8259 PICs during execution
  7421.       (see #2172) and runs inside a QEMM critical section
  7422.     calls AX=1307h (see #2167)
  7423.  
  7424. (Table 2174)
  7425. Values for calling QEMM QPI function 130Eh:
  7426.     AX = 130Eh ??? (modifies CRT controller setup)
  7427.     ???
  7428. Return: CF clear
  7429.  
  7430. (Table 2175)
  7431. Values for calling QEMM QPI function 130Fh:
  7432.     AX = 130Fh reset ???
  7433. Return: CF clear
  7434.  
  7435. (Table 2176)
  7436. Values for calling QEMM QPI function 1310h:
  7437.     AX = 1310h copy modified pages to physical video RAM???
  7438.     ???
  7439. Return: CF clear
  7440. Note:    disables certain interrupts at the two 8259 PICs during execution
  7441.       (see #2172) and runs inside a QEMM critical section
  7442.     also calls AX=130Dh (see #2173)
  7443.  
  7444. (Table 2177)
  7445. Values for calling QEMM QPI function 1311h:
  7446.     AX = 1311h set ???
  7447.     BL = zero/nonzero???
  7448. Return: CF clear
  7449. Note:    certain operations will be performed with interrupts
  7450.       (as set by AX=130Ch) enabled rather than disabled if
  7451.       called with BL nonzero
  7452.  
  7453. (Table 2178)
  7454. Values for calling QEMM QPI function 1312h:
  7455.     AX = 1312h (v6.02) NOP???
  7456. Note:    called by DV 2.42, but appears to be a NOP in QEMM 6.02
  7457.  
  7458. (Table 2179)
  7459. Values for calling QEMM QPI function 1400h:
  7460.     AX = 1400h initialize DESQview "protection level" support
  7461.     ES:DI -> protection level configuration (at least 24 bytes)
  7462.         (see #2246)
  7463.     BL = highest ??? to return (one less than number of words)
  7464. Return: CF clear
  7465.     AX = ??? (4204h for v6.00)
  7466. Note:    QEMM also sets the protected mode INT 02 and INT 06
  7467.       vectors to alternate handlers in certain cases
  7468.  
  7469. (Table 2180)
  7470. Values for calling QEMM QPI function 1401h:
  7471.     AX = 1401h turn off DESQview protection level support
  7472.         Return: CF clear
  7473.             ???
  7474.         Notes:    clears the DV critical-section flag address set with
  7475.               function 1306h
  7476.             QEMM also sets the protected mode INT 02 and INT 06
  7477.               vectors to the default handlers if they had been
  7478.               revectored by function 1400h
  7479.  
  7480. (Table 2181)
  7481. Values for calling QEMM QPI function 1402h:
  7482.     AX = 1402h set protection level???
  7483.         BL = protection level???
  7484.             00h NOP
  7485.             01h ???
  7486.             02h ???
  7487.             other (03h) ???
  7488.         ES:DI -> ???
  7489.         Return: CF clear
  7490.             ???
  7491.         Format of Data structure:
  7492.         Offset    Size    Description
  7493.          00h    WORD    segment of ??? (X, word at X:0136h set to X)
  7494.          02h    WORD    segment of ??? (word at X:0124h set to this)
  7495.          04h    WORD    number of paragraphs of ???
  7496.          06h  3 WORDs    ??? (copied to X:0000h)
  7497.          0Ch    WORD    ???
  7498.  
  7499. (Table 2182)
  7500. Values for calling QEMM QPI function 1403h:
  7501.     AX = 1403h add ??? to end of list and ??? (execute func 1406h)
  7502.         ES:DI -> ??? structure added to end of ??? list
  7503.             (at least 31 bytes, DWORD at offset 06h used for
  7504.              storing pointer to next struc, WORD at offset 00h
  7505.              seems to be a key or index)
  7506.         Return: CF clear
  7507.  
  7508. (Table 2183)
  7509. Values for calling QEMM QPI function 1404h:
  7510.     AX = 1404h NOP
  7511.         Return: CF clear
  7512.  
  7513. (Table 2184)
  7514. Values for calling QEMM QPI function 1405h:
  7515.     AX = 1405h remove ??? from ??? list
  7516.         BX = key???
  7517.         Return: CF clear
  7518.  
  7519. (Table 2185)
  7520. Values for calling QEMM QPI function 1406h:
  7521.     AX = 1406h ???
  7522.         ???
  7523.         Return: CF clear
  7524.             ???
  7525.         Notes:    this function is a NOP unless protection level 2 or 3
  7526.               is active
  7527.             when not a NOP, one of the actions is to write-protect
  7528.               certain memory pages
  7529.  
  7530. (Table 2186)
  7531. Values for calling QEMM QPI function 1407h:
  7532.     AX = 1407h ???
  7533.         ???
  7534.         Return: CF clear
  7535.             ???
  7536.         Note:    same as function 1406h, but only does anything if
  7537.               protection level 2 is active
  7538.  
  7539. (Table 2187)
  7540. Values for calling QEMM QPI function 1408h:
  7541.     AX = 1408h unprotect???
  7542.         ???
  7543.         Return: CF clear
  7544.             ???
  7545.  
  7546. (Table 2188)
  7547. Values for calling QEMM QPI function 1409h:
  7548.     AX = 1409h abort program causing protection violation???
  7549.         ???
  7550.         Return: CF clear
  7551.             ???
  7552.  
  7553. (Table 2189)
  7554. Values for calling QEMM QPI function 140Ah:
  7555.     AX = 140Ah set ???
  7556.         BX = index of ???
  7557.         Return: CF clear
  7558.             ???
  7559.         Notes:    no range checking is performed on BX
  7560.             this function is a NOP unless protection level 3 active
  7561.  
  7562. (Table 2190)
  7563. Values for calling QEMM QPI function 140Bh:
  7564.     AX = 140Bh get ???
  7565.         BX = index of ???
  7566.         SI = 0000h
  7567.         Return: CF clear
  7568.             SI = segment of 256-byte buffer??? or 0000h
  7569.         Notes:    no range checking is performed on BX
  7570.             this function is a NOP unless protection level 3 active
  7571.  
  7572. (Table 2191)
  7573. Values for calling QEMM QPI function 15h:
  7574.     AH = 15h set timer channel 0 virtualization buffer
  7575.         ES:BX -> WORD buffer for timer channel 0 divisor
  7576.             0000h:0000h to disable virtualization
  7577.         Return: CF clear
  7578.  
  7579. (Table 2192)
  7580. Values for calling QEMM v5.00+ QPI function 1600h:
  7581.     AX = 1600h get memory access status
  7582.         ES:DI -> 256-byte buffer
  7583.         Return: ES:DI buffer filled
  7584.         Note:    each byte of the buffer indicates the status of a 4K
  7585.               page (bit 0 set if read, bit 1 set if written)
  7586.  
  7587. (Table 2193)
  7588. Values for calling QEMM v5.00+ QPI function 1601h:
  7589.     AX = 1601h set memory access status
  7590.         ES:DI -> 256-byte buffer containing access statuses (see #2192)
  7591.  
  7592. (Table 2194)
  7593. Values for calling QEMM v5.00+ QPI function 17h:
  7594.     AH = 17h get memory usage statistics
  7595.         ES:DI -> 81-byte buffer for memory statistics (see #2250)
  7596.         Return: CF clear
  7597.  
  7598. (Table 2195)
  7599. Values for calling QEMM v5.11+ QPI function 18h:
  7600.     AH = 18h check whether conventional memory mapped into address range
  7601.         ES:BX = starting address
  7602.         CX = number of 4K pages
  7603.         Return: CF clear
  7604.             AL = 00h one or more pages is remapped
  7605.                  01h all pages in range are conventional memory
  7606.                 (physical address == virtual address)
  7607.  
  7608. (Table 2196)
  7609. Values for calling QEMM v5.11+ QPI function 19h:
  7610.     AH = 19h NOP
  7611.         Return: CF set
  7612.  
  7613. (Table 2197)
  7614. Values for calling QEMM v5.11+ "QPI_UntrappedIORead" function:
  7615.     AX = 1A00h get byte from I/O port
  7616.     DX = port number
  7617. Return: CF clear
  7618.     BL = port value
  7619. Note:    this function was officially documented with the release of QEMM 7.50
  7620.  
  7621. (Table 2198)
  7622. Values for calling QEMM v5.11+ "QPI_UntrappedIOWrite" function:
  7623.     AX = 1A01h send byte to I/O port
  7624.     BL = value to send
  7625.     DX = port number
  7626. Return: CF clear
  7627. Note:    this function was officially documented with the release of QEMM 7.50
  7628.  
  7629. (Table 2199)
  7630. Values for calling QEMM v5.11+ "QPI_UntrappedIOReadIndexed" function:
  7631.     AX = 1A02h
  7632.     BH = index value to send
  7633.     DX = base port number
  7634. Return: CF clear
  7635.     BL = value read from I/O port (DX+1)
  7636. Note:    this function was officially documented with the release of QEMM 7.50
  7637.  
  7638. (Table 2200)
  7639. Values for calling QEMM v5.11+ "QPI_UntrappedIOWriteIndexed" function:
  7640.     AX = 1A03h send bytes to two consecutive I/O ports
  7641.     BH = value for first I/O port (DX)
  7642.     BL = value for second I/O port (DX+1)
  7643.     DX = base port number
  7644. Return: CF clear
  7645. Note:    this function was officially documented with the release of QEMM 7.50
  7646.  
  7647. (Table 2201)
  7648. Values for calling QEMM v7.03+ "QPI_UntrappedIO" function:
  7649.     AX = 1A04h
  7650.     BX = value to write to port
  7651.     CX = direction and size
  7652.         bit 2: output instead of input
  7653.         bit 3: word instead of byte
  7654.     DX = I/O port to be accessed
  7655. Return: CF clear
  7656.     BX = value read (if CX indicates read)
  7657. Note:    this function was officially documented with the release of QEMM 7.50
  7658.  
  7659. (Table 2202)
  7660. Values for calling QEMM v7.03+ function 1A05h
  7661.     AX = 1A05h
  7662.     ???
  7663. Return: ???
  7664.  
  7665. (Table 2203)
  7666. Values for calling QEMM v7.03+ "QPI_GetIOCallback" function:
  7667.     AX = 1A06h
  7668. Return: CF clear
  7669.     ES:DI -> current I/O callback function
  7670. Note:    this function was officially documented with the release of QEMM 7.50
  7671.  
  7672. (Table 2204)
  7673. Values for calling QEMM v7.03+ "QPI_SetIOCallback" function:
  7674.     AX = 1A07h
  7675.     ES:DI -> new I/O callback function
  7676. Return: CF clear
  7677. Note:    this function was officially documented with the release of QEMM 7.50
  7678.  
  7679. (Table 2205)
  7680. Values for calling QEMM v7.03+ "QPI_GetPortTrap" function:
  7681.     AX = 1A08h
  7682.     DX = I/O port number
  7683. Return: CF clear
  7684.     BL = trapping state (00h not being trapped, 01h trap installed)
  7685. Note:    this function was officially documented with the release of QEMM 7.50
  7686.  
  7687. (Table 2206)
  7688. Values for calling QEMM v7.03+ "QPI_SetPortTrap" function:
  7689.     AX = 1A09h
  7690.     DX = I/O port number
  7691. Return: CF clear
  7692. Note:    this function was officially documented with the release of QEMM 7.50
  7693.  
  7694. (Table 2207)
  7695. Values for calling QEMM v7.03+ "QPI_ClearPortTrap" function:
  7696.     AX = 1A0Ah
  7697.     DX = I/O port number
  7698. Return: CF clear
  7699. Note:    this function was officially documented with the release of QEMM 7.50
  7700.  
  7701. (Table 2208)
  7702. Values for calling QEMM v5.11+ QPI function 1B00h:
  7703.     AX = 1B00h get EMM Import Structure address
  7704.     ES:DI -> buffer for EMM import data structure (see #2248)
  7705. Return: CF set on error
  7706.     CF clear if successful
  7707. SeeAlso: INT 21/AX=4402h/SF=01h
  7708.  
  7709. (Table 2209)
  7710. Values for calling QEMM v5.11+ QPI function 1B01h:
  7711.     AX = 1B01h disable V86 mode
  7712. Return: CF set on error
  7713.         (i.e. no Global EMM Import rec. allocated)
  7714.     CF clear if successful
  7715. Note:    shuts down EMS and initializes Global EMM Import record; this function
  7716.       is invoked from the callback supplied by INT 2F/AX=1605h
  7717.  
  7718. (Table 2210)
  7719. Values for calling QEMM v5.11+ QPI function 1B02h:
  7720.     AX = 1B02h enable V86 mode
  7721. Return: CF set on error
  7722.     CF clear if successful
  7723. Note:    restarts EMS and frees Global EMM Import record; this function is
  7724.       invoked from the callback supplied by INT 2F/AX=1605h
  7725.  
  7726. (Table 2211)
  7727. Values for calling QEMM v5.11+ QPI function 1B03h:
  7728.     AX = 1B03h MS Windows initializing
  7729.     CX = segment from which Windows init broadcast made???
  7730.     DX = Windows startup flags
  7731.     DI = Windows version number (major in upper byte)
  7732. Return: CF clear if successful
  7733.         DS:SI -> V86 mode enable/disable callback
  7734.           (see #1413 at INT 2F/AX=1605h)
  7735.         ES:BX -> startup info structure (see #1410 at INT 2F/AX=1605h)
  7736.     CF set on error (unable to start Windows)
  7737. SeeAlso: INT 2F/AX=1605h
  7738.  
  7739. (Table 2212)
  7740. Values for calling QEMM v5.11+ QPI function 1B04h:
  7741.     AX = 1B04h MS Windows terminating
  7742. Return: CF clear
  7743.  
  7744. (Table 2213)
  7745. Values for calling QEMM v5.11+ QPI function 1B05h:
  7746.     AX = 1B05h determine whether program is driver
  7747.     DS:DX -> ASCIZ filename
  7748. Return: CF clear
  7749.     AL = status
  7750.         01h if string ends in ".DRV"
  7751.         FFh if string ends in "GDI.EXE"
  7752.         00h otherwise
  7753. Note:    when MS Windows 3.0 standard mode starts, QEMM patches all drivers
  7754.       until GDI.EXE is loaded
  7755.  
  7756. (Table 2214)
  7757. Values for calling QEMM v5.11+ QPI function 1B06h:
  7758.     AX = 1B06h patch protected-mode check in Windows driver
  7759.     CX = length of data pointed at by DS:DX
  7760.     DS:DX -> buffer containing Windows driver code
  7761. Return: CF clear
  7762. Note:    patches all SMSW x/TEST x,1 instruction sequences into MOV x,CS/VERW x
  7763.       sequences, which has the effect that the protected-mode check will
  7764.       only indicate protected mode in native protected mode and not in V86
  7765.       mode
  7766.  
  7767. (Table 2215)
  7768. Values for calling QEMM v5.11+ QPI function 1B07h:
  7769.     AX = 1B07h
  7770. BUG: QEMM 6.00-7.01 accept this and branch randomly
  7771.  
  7772. (Table 2216)
  7773. Values for calling QEMM v5.11+ QPI function 1Bxxh:
  7774.     AX = 1B08h to 1BFFh
  7775. Return: CF set
  7776.  
  7777. (Table 2217)
  7778. Values for calling QEMM v5.11+ QPI function 1C00h:
  7779.     AX = 1C00h disable IRQ0-7 calldowns
  7780. Return: CF clear
  7781.  
  7782. (Table 2218)
  7783. Values for calling QEMM v5.11+ QPI function 1C01h:
  7784.     AX = 1C01h set V86-mode IRQ0-7 handlers
  7785.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  7786. Return: CF clear
  7787.  
  7788. (Table 2219)
  7789. Values for calling QEMM v5.11+ QPI function 1C02h:
  7790.     AX = 1C02h disable IRQ8-15 handlers
  7791. Return: CF clear
  7792.  
  7793. (Table 2220)
  7794. Values for calling QEMM v5.11+ QPI function 1C03h:
  7795.     AX = 1C03h set V86-mode IRQ8-15 handlers
  7796.     ES:DI -> 8 DWORDs containing V86-mode handler addresses
  7797. BUG:    although the jump table only contains four entries, QEMM 6.00 will
  7798.       attempt to use it for any value of AL between 00h and 2Ah, thus
  7799.       branching unpredictably for AL=04h-2Ah; QEMM v7.01 behaves
  7800.       similarly for AL=04h-1Bh
  7801. Note:    when enabled, the appropriate IRQs are reflected back to the specified
  7802.       handlers in virtual-86 mode after the CPU automatically invokes the
  7803.       protected-mode handler inside QEMM
  7804.  
  7805. (Table 2221)
  7806. Values for calling QEMM v7.03+ "QPI_SimulateHWInt" function:
  7807.     AX = 1C04h
  7808.     BX = number of interrupt to simulate
  7809. Return: ???
  7810. Notes:    this function will allow proper simulation of a hardware interrupt
  7811.       under DESQview and DESQview/X, where the correct interrupt handler
  7812.       may be in a different process with a completely different address
  7813.       space
  7814.     this function was officially documented with the release of QEMM v7.50
  7815.  
  7816. (Table 2222)
  7817. Values for calling QEMM v6.0x only QPI function 1D00h:
  7818.     AX = 1D00h switch to pre-Stealth interrupt vector table
  7819. Return: CF clear if supported (QEMM v6.x)
  7820.     CF set if not supported (QEMM v7+)
  7821. Notes:    also switches VGA Save table pointer (0040h:00A8h) and overwrites the
  7822.       vectors currently assigned for use by the two interrupt controllers
  7823.       (see INT 67/AX=DE0Ah) with the vectors for INT 08-0F and 70-77 (to
  7824.       avoid crashing the system).
  7825.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  7826.       set
  7827.  
  7828. (Table 2223)
  7829. Values for calling QEMM v6.0x only QPI function 1D01h:
  7830.     AX = 1D01h restore user interrupt vector table
  7831. Return: CF clear if supported (QEMM v6.x)
  7832.     CF set if not supported (QEMM v7+)
  7833. Notes:    interrupts should be disabled around the AX=1D00h and AX=1D01h calls
  7834.       because QEMM does not modify the memory maps to map in ROM, so
  7835.       an interrupt could be disastrous
  7836.     clears any pending IRQ7 at end of function
  7837.     functions 1Dxxh are not supported by QEMM v7.01, and always return CF
  7838.       set
  7839.  
  7840. (Table 2224)
  7841. Values for calling QEMM v6.00+ QPI function 1Dxxh:
  7842.     AX = 1D02h to 1DFFh
  7843. Return: CF set
  7844.  
  7845. (Table 2225)
  7846. Values for calling QEMM v6.00+ "QEMM_GET_INFO"/"QPI_GetInfo" function:
  7847.     AX = 1E00h get Stealth configuration
  7848. Return:    CF clear
  7849.     BL = memory configuration flags (documented as "reserved") (see #2249)
  7850.     BH = (v7.00+) disk buffer flags
  7851.         bit 0: DISKBUFFRAME buffer instead of DISKBUF buffer
  7852.         bit 1: buffer has already been used
  7853.     CL = stealth type (00h none, 46h Frame, 4Dh Map, 50h Protect)
  7854.     CH = suspend/resume interrupt (00h none)
  7855.     DL = (v7.00+) size of QEMM disk buffer in KB (00h none)
  7856.     DH = reserved (always 00h for v6.00)
  7857.     SI = reserved (always 0000h for v6.00)
  7858.     DI = reserved (always 0000h for v6.00)
  7859. Note:    this function is officially documented
  7860.  
  7861. (Table 2226)
  7862. Values for calling QEMM v6.00+ "QPI_GetStealthCount" function:
  7863.     AX = 1E01h get number of Stealth'ed ROMs
  7864. Return: CF clear
  7865.     BX = number of Stealth'ed ROMs
  7866. Note:    this function is officially documented
  7867.  
  7868. (Table 2227)
  7869. Values for calling QEMM v6.00+ "QPI_GetStealthList" function:
  7870.     AX = 1E02h
  7871.     ES:DI -> buffer for Stealth ROM info (see #2251)
  7872. Return: CF clear
  7873.     BX = number of Stealth'ed ROMs
  7874.     ES:DI buffer filled
  7875. Note:    this function is officially documented
  7876.  
  7877. (Table 2228)
  7878. Values for unimplemented Stealth information functions:
  7879.     AX = 1E03h to 1EFFh
  7880. Return: CF set
  7881.  
  7882.  
  7883. (Table 2229)
  7884. Values for calling QEMM v6.00+ "QEMM_GET_PTE"/"QPI_GetPTE" function:
  7885.     AX = 1F00h get page table entry
  7886.     CX = page number (0000h-010Fh)
  7887. Return:    CF clear
  7888.     EDX = page table entry
  7889. Note:    this function is officially documented
  7890.  
  7891. (Table 2230)
  7892. Values for calling QEMM v6.00+ "QEMM_SET_PTE"/"QPI_SetPTE" function:
  7893.     AX = 1F01h set page table entry
  7894.     CX = page number (0000h-010Fh)
  7895.     EDX = new page table entry
  7896. Return: CF clear
  7897. Note:    this function is officially documented
  7898. SeeAlso: function 1008h
  7899.  
  7900. (Table 2231)
  7901. Values for calling QEMM v6.00+ QPI function 1Fxxh:
  7902.     AX = 1F02h to 1FFFh
  7903. Return: CF set
  7904.  
  7905. (Table 2232)
  7906. Values for calling QEMM v6.00+ "QEMM_GET_VHI_INFO"/"QPI_GetVHIInfo" function:
  7907.     AX = 2000h "QEMM_GET_VHI_INFO" get VirtualHDIRQ information
  7908. Return: CF clear
  7909.     BL = flags
  7910.         bit 7: VirtualHDIRQ setting respected
  7911.           (set if Stealth active)
  7912.         bits 6-1 reserved
  7913.         bit 0: VirtualHDIRQ currently enabled
  7914.         (INT 15/AH=90h suppressed when enabled)
  7915. Note:    this function is officially documented
  7916. SeeAlso: #2233
  7917.  
  7918. (Table 2233)
  7919. Values for calling QEMM v6.00+ "QEMM_SET_VHI_INFO"/"QPI_SetVHIInfo" function:
  7920.     AX = 2001h set VirtualHDIRQ state
  7921.     BL bit 0 = new VirtualHDIRQ state
  7922. Return: CF clear
  7923.     BL = old VHI setting (bits 0 and 7, see #2232)
  7924. Note:    this function is officially documented
  7925. SeeAlso: #2232
  7926.  
  7927. (Table 2234)
  7928. Values for calling QEMM v6.00+ QPI function 20xxh:
  7929.     AX = 2002h to 20FFh
  7930. Return: CF set
  7931.  
  7932. (Table 2235)
  7933. Values for calling QEMM v6.00+ "QEMM_COPY_STEALTH_ROMS"/"QPI_CopyStealthRoms":
  7934.     AX = 2100h copy data from Stealthed address space
  7935.     DS:SI -> start address of hidden memory to copy
  7936.     ES:DI -> buffer for copied data
  7937.     ECX = number of bytes to copy
  7938. Return: CF clear if successful
  7939.     CF set on error (no Stealth or DS:SI < C000h:0000h or DS:SI + ECX > 1M)
  7940. Note:    this function was officially documented with the release of QEMM 7.50
  7941.  
  7942. (Table 2236)
  7943. Values for calling QEMM v6.00+ QPI function 21xxh:
  7944.     AX = 2101h to 21FFh
  7945. Return: CF set
  7946.  
  7947. (Table 2237)
  7948. Values for calling QEMM v6.03+ QPI function 2200h:
  7949.     AX = 2200h DESQview/X support -- get ???
  7950. Return: CF clear
  7951.     ES:DI -> ???
  7952.  
  7953. (Table 2238)
  7954. Values for calling QEMM v6.03+ QPI function 2201h:
  7955.     AX = 2201h DESQview/X support -- set ???
  7956.     ES:DI -> ??? or 0000h:0000h
  7957. Return: CF clear if successful
  7958.     CF set on error
  7959.  
  7960. (Table 2239)
  7961. Values for calling QEMM v6.04+ QPI function 2300h:
  7962.     AX = 2300h get ???
  7963.     BX = which ??? to get (must be 0000h for v6.04)
  7964. Return: CF clear if successful
  7965.         ES:DI -> ???
  7966.     CF set on error
  7967.  
  7968. (Table 2240)
  7969. Values for calling QEMM v6.04+ QPI function 2301h:
  7970.     AX = 2301h set ???
  7971.     BX = which ??? to set (must be 0000h for v6.04)
  7972.     ES:DI -> ???
  7973. Return: CF clear if successful
  7974.     CF set on error
  7975.  
  7976. (Table 2241)
  7977. Values for calling QEMM v6.04+ QPI function 2302h:
  7978.     AX = 2302h clear specified ???
  7979.     BX = which ??? to clear (must be 0000h for v6.04)
  7980. Return: CF clear if successful
  7981.     CF set on error
  7982.  
  7983. (Table 2242)
  7984. Values for calling QEMM v6.04+ QPI function 23FFh:
  7985.     AX = 23FFh clear all ???
  7986. Return: CF clear if successful
  7987.     CF set on error
  7988.  
  7989. (Table 2243)
  7990. Values for calling QEMM v6.04+ QPI function 23xxh:
  7991.     AX = 2303h to 23FEh
  7992. Return: CF set
  7993.  
  7994. (Table 2244)
  7995. Values for calling QEMM v7.01+ QPI function 24h:
  7996.     AH = 24h ST-DBL support
  7997.     AL = subfunction
  7998.         00h set ???
  7999.         EDX -> information table (EDX = segment SHL 16 + offset)
  8000.         01h ???
  8001. Return: CF clear if successful
  8002.     CF set on error
  8003.  
  8004. (Table 2245)
  8005. Values for calling QEMM unimplemented QPI functions:
  8006.     AH = 25h to FFh
  8007. Return: CF set
  8008.  
  8009. Format of QEMM protection level configuration:
  8010. Offset    Size    Description    (Table 2246)
  8011.  00h    WORD    segment of 128 breakpoint (INT 3) instructions for use in
  8012.           DESQview protection level 3 interrupt vector checking, or
  8013.           0000h to disable; in pl3, INTs 00-7F are pointed at these
  8014.           breakpoints
  8015.  02h    DWORD    -> array of actual interrupt handler addresses for INT 00-7F
  8016.           when interrupt vectors are pointed at protection level 3
  8017.           breakpoints
  8018.  06h    DWORD    far pointer to ??? region list (see #2247)
  8019.  0Ah    DWORD    far pointer to buffer for returned ???
  8020.  0Eh    DWORD    seg:ofs of function to call on protection violation???
  8021.  12h    WORD    segment of ???
  8022.  14h    DWORD    far pointer to DWORD containing number of paragraphs of
  8023.           ??? for segment at offset 12h
  8024.     ???
  8025.  
  8026. Format of protection level Region List:
  8027. Offset    Size    Description    (Table 2247)
  8028.  00h    WORD    number of PAIRS of pointers to follow
  8029.  02h 2N DWORDs    start/end seg:ofs addresses of ??? regions
  8030. Note:    QEMM converts the segmented addresses into linear addresses in place
  8031.  
  8032. Format of EMM Import structure:
  8033. Offset    Size    Description    (Table 2248)
  8034.  00h    DWORD    physical address of EMM import struct
  8035.  04h    BYTE    major version (v6.00 sets to 01h)
  8036.  05h    BYTE    minor version (v6.00 sets to 00h/0Bh)
  8037. SeeAlso: INT 21/AX=4402h/SF=01h
  8038.  
  8039. Bitfields for memory configuration flags:
  8040. Bit(s)    Description    (Table 2249)
  8041.  0    conventional memory sorted
  8042.  1    conventional memory filled
  8043.  2    ???
  8044.  3    ???
  8045.  4    expanded memory is in use
  8046.  5    ???
  8047.  
  8048. Format of QEMM 6.0 memory statistics:
  8049. Offset    Size    Description    (Table 2250)
  8050.  00h    BYTE    01h if Shadow RAM found, 00h otherwise
  8051.  01h    DWORD    initial conventional memory in bytes
  8052.  05h    DWORD    initial extended memory in bytes
  8053.  09h    DWORD    initial expanded memory in bytes
  8054.  0Dh    DWORD    initial "top" or "shadow" memory in bytes
  8055.  11h    DWORD    Unavailable conventional memory in bytes
  8056.  15h    DWORD    Unavailable extended memory in bytes
  8057.  19h    DWORD    Unavailable expanded memory in bytes
  8058.  1Dh    DWORD    Unavailable "top" or "shadow" memory in bytes
  8059.         Add to offset 49h for Total unavailable top/shadow.
  8060.  21h    DWORD    QEMM code size in bytes
  8061.  25h    DWORD    QEMM data size in bytes
  8062.  29h    DWORD    bytes used for TASKS=
  8063.  2Dh    DWORD    DMA buffer size
  8064.  31h    DWORD    bytes used for MAPS=
  8065.  35h    DWORD    bytes of high RAM
  8066.  39h    DWORD    bytes used by mapped ROMs
  8067.  3Dh    DWORD    bytes of conventional memory provided by QEMM
  8068.  41h    DWORD    bytes of extended memory NOT converted by QEMM (EXT=xxx)
  8069.  45h    DWORD    bytes of EMS/XMS pool memory provided by QEMM
  8070.  49h    DWORD    Unavailable "top" or "shadow" memory in bytes
  8071.         Add to offset 1Dh for Total unavailable top/shadow.
  8072.  4Dh    DWORD    conventional memory overhead in bytes
  8073.         (set to 0 by QEMM.COM prior to call)
  8074.  
  8075. Format of Stealth ROM info [array]:
  8076. Offset    Size    Description    (Table 2251)
  8077.  00h    WORD    starting segment of ROM
  8078.  02h    WORD    length of ROM in paragraphs
  8079.  
  8080. Format of QEMM EGA/VGA DAC register virtualization buffer:
  8081. Offset    Size    Description    (Table 2252)
  8082.  00h    BYTE    (temp) current color register number
  8083.  01h    BYTE    (temp) number of bytes written so far for current color reg
  8084.  02h 768 BYTEs    three bytes per color register
  8085. --------m-6740-------------------------------
  8086. INT 67 - LIM EMS - GET MANAGER STATUS
  8087.     AH = 40h
  8088. Return: AH = status (00h,80h,81h,84h) (see #2253)
  8089. Note:    this call can be used only after establishing that the EMS driver is in
  8090.       fact present
  8091. SeeAlso: AH=3Fh,AX=FFA5h
  8092.  
  8093. (Table 2253)
  8094. Values for EMS function status:
  8095.  00h    successful
  8096.  80h    internal error
  8097.  81h    hardware malfunction
  8098.  83h    invalid handle
  8099.  84h    undefined function requested by application
  8100.  85h    no more handles available
  8101.  86h    error in save or restore of mapping context
  8102.  87h    insufficient memory pages in system
  8103.  88h    insufficient memory pages available
  8104.  89h    zero pages requested
  8105.  8Ah    invalid logical page number encountered
  8106.  8Bh    invalid physical page number encountered
  8107.  8Ch    page-mapping hardware state save area is full
  8108.  8Dh    save of mapping context failed
  8109.  8Eh    restore of mapping context failed
  8110.  8Fh    undefined subfunction
  8111.  90h    undefined attribute type
  8112.  91h    feature not supported
  8113.  92h    successful, but a portion of the source region has been overwritten
  8114.  93h    length of source or destination region exceeds length of region
  8115.       allocated to either source or destination handle
  8116.  94h    conventional and expanded memory regions overlap
  8117.  95h    offset within logical page exceeds size of logical page
  8118.  96h    region length exceeds 1M
  8119.  97h    source and destination EMS regions have same handle and overlap
  8120.  98h    memory source or destination type undefined
  8121.  9Ah    specified alternate map register or DMA register set not supported
  8122.  9Bh    all alternate map register or DMA register sets currently allocated
  8123.  9Ch    alternate map register or DMA register sets not supported
  8124.  9Dh    undefined or unallocated alternate map register or DMA register set
  8125.  9Eh    dedicated DMA channels not supported
  8126.  9Fh    specified dedicated DMA channel not supported
  8127.  A0h    no such handle name
  8128.  A1h    a handle found had no name, or duplicate handle name
  8129.  A2h    attempted to wrap around 1M conventional address space
  8130.  A3h    source array corrupted
  8131.  A4h    operating system denied access
  8132. --------m-6741-------------------------------
  8133. INT 67 - LIM EMS - GET PAGE FRAME SEGMENT
  8134.     AH = 41h
  8135. Return: AH = status (see also AH=40h)
  8136.         00h function successful
  8137.         BX = segment of page frame
  8138. SeeAlso: AH=58h,AH=68h
  8139. --------m-6742-------------------------------
  8140. INT 67 - LIM EMS - GET NUMBER OF PAGES
  8141.     AH = 42h
  8142. Return: AH = status (see also AH=40h)
  8143.         00h function successful
  8144.         BX = number of unallocated pages
  8145.         DX = total number of pages
  8146. BUG:    DOS 6.0 EMM386.EXE causes a system lock-up or reboot if in AUTO mode
  8147.       when this call is made; use AH=46h to ensure that EMM386 is ON
  8148.       before making this call
  8149. SeeAlso: INT 2F/AX=2702h
  8150. --------m-6743-------------------------------
  8151. INT 67 - LIM EMS - GET HANDLE AND ALLOCATE MEMORY
  8152.     AH = 43h
  8153.     BX = number of logical pages to allocate
  8154. Return: AH = status (00h,80h,81h,84h,85h,87h,88h,89h) (see #2253)
  8155.     DX = handle if AH=00h
  8156. SeeAlso: AH=45h
  8157. --------m-6744-------------------------------
  8158. INT 67 - LIM EMS - MAP MEMORY
  8159.     AH = 44h
  8160.     AL = physical page number (0-3)
  8161.     BX = logical page number
  8162.         or FFFFh to unmap (QEMM)
  8163.     DX = handle
  8164. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh) (see #2253)
  8165. SeeAlso: AH=69h
  8166. --------m-6745-------------------------------
  8167. INT 67 - LIM EMS - RELEASE HANDLE AND MEMORY
  8168.     AH = 45h
  8169.     DX = EMM handle
  8170. Return: AH = status (00h,80h,81h,83h,84h,86h) (see #2253)
  8171. SeeAlso: AH=43h
  8172. --------m-6746-------------------------------
  8173. INT 67 - LIM EMS - GET EMM VERSION
  8174.     AH = 46h
  8175. Return: AH = status (00h,80h,81h,84h) (see #2253)
  8176.     AL = EMM version number if AH=00h
  8177. --------m-6747-------------------------------
  8178. INT 67 - LIM EMS - SAVE MAPPING CONTEXT
  8179.     AH = 47h
  8180.     DX = handle
  8181. Return: AH = status (00h,80h,81h,83h,84h,8Ch-8Eh) (see #2253)
  8182. SeeAlso: AH=48h
  8183. --------m-6748-------------------------------
  8184. INT 67 - LIM EMS - RESTORE MAPPING CONTEXT
  8185.     AH = 48h
  8186.     DX = handle
  8187. Return: AH = status (00h,80h,81h,83h,84h,8Eh) (see #2253)
  8188. SeeAlso: AH=47h
  8189. --------m-6749-------------------------------
  8190. INT 67 - LIM EMS - reserved - GET I/O PORT ADDRESSES
  8191.     AH = 49h
  8192. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8193. --------m-674A-------------------------------
  8194. INT 67 - LIM EMS - reserved - GET TRANSLATION ARRAY
  8195.     AH = 4Ah
  8196. Note:    defined in EMS 3.0, but undocumented in EMS 3.2
  8197. --------m-674B-------------------------------
  8198. INT 67 - LIM EMS - GET NUMBER OF EMM HANDLES
  8199.     AH = 4Bh
  8200. Return: AH = status (00h,80h,81h,83h,84h) (see #2253)
  8201.     BX = number of EMM handles if AH=00h
  8202. --------m-674C-------------------------------
  8203. INT 67 - LIM EMS - GET PAGES OWNED BY HANDLE
  8204.     AH = 4Ch
  8205.     DX = EMM handle
  8206. Return: AH = status (see #1504)
  8207.     BX = number of logical pages if AH=00h
  8208. SeeAlso: AH=4Dh
  8209. --------m-674D-------------------------------
  8210. INT 67 - LIM EMS - GET PAGES FOR ALL HANDLES
  8211.     AH = 4Dh
  8212.     ES:DI -> array to receive information
  8213. Return: AH = status (00h,80h,81h,84h) (see #2253)
  8214.     ---if AH=00h---
  8215.     BX = number of active EMM handles
  8216.     array filled with 2-word entries, consisting of a handle and the
  8217.       number of pages allocated to that handle
  8218. SeeAlso: AH=4Ch
  8219. --------m-674E-------------------------------
  8220. INT 67 - LIM EMS - GET OR SET PAGE MAP
  8221.     AH = 4Eh
  8222.     AL = subfunction
  8223.         00h get mapping registers
  8224.         01h set mapping registers
  8225.         02h get and set mapping registers at once
  8226.         03h get size of page-mapping array
  8227.     DS:SI -> array holding information (AL=01h/02h)
  8228.     ES:DI -> array to receive information (AL=00h/02h)
  8229. Return: AH = status (00h,80h,81h,84h,8Fh,A3h) (see also AH=40h)
  8230.         00h successful
  8231.         AL = bytes in page-mapping array (AL=03h only)
  8232.         array pointed to by ES:DI receives mapping info (AL=00h/02h)
  8233. Notes:    this function was designed to be used by multitasking operating systems
  8234.       and should not ordinarily be used by appplication software.
  8235.     MD386 returns the size of the page-mapping array in AX instead of AL
  8236. SeeAlso: AH=4Fh
  8237. --------m-674F-------------------------------
  8238. INT 67 - LIM EMS 4.0 - GET/SET PARTIAL PAGE MAP
  8239.     AH = 4Fh
  8240.     AL = subfunction
  8241.         00h get partial page map
  8242.            DS:SI -> structure containing list of segments whose mapping
  8243.             contexts are to be saved
  8244.            ES:DI -> array to receive page map
  8245.         01h set partial page map
  8246.            DS:SI -> structure containing saved partial page map
  8247.         02h get size of partial page map
  8248.            BX = number of mappable segments in the partial map to be saved
  8249. Return: AH = status (00h,80h,81h,84h,8Bh,8Fh,A3h) (see also AH=40h)
  8250.         8Bh one of the specified segments is not mappable
  8251.         A3h contents of partial page map corrupted or count of mappable
  8252.         segments exceeds total number of mappable segments in system
  8253.     AL = size of partial page map for subfunction 02h
  8254. SeeAlso: AH=4Eh
  8255. --------m-6750-------------------------------
  8256. INT 67 - LIM EMS 4.0 - MAP/UNMAP MULTIPLE HANDLE PAGES
  8257.     AH = 50h
  8258.     AL = subfunction
  8259.         00h use physical page numbers
  8260.         01h use segment addresses
  8261.     DX = handle
  8262.     CX = number of entries in array
  8263.     DS:SI -> mapping array (see #2254)
  8264. Return: AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  8265. SeeAlso: AH=40h
  8266.  
  8267. Format of EMS mapping array entry:
  8268. Offset    Size    Description    (Table 2254)
  8269.  00h    WORD    logical page number or FFFFh to unmap physical page
  8270.  02h    WORD    physical page number or segment address
  8271. --------m-6751-------------------------------
  8272. INT 67 - LIM EMS 4.0 - REALLOCATE PAGES
  8273.     AH = 51h
  8274.     DX = handle
  8275.     BX = number of pages to be allocated to handle
  8276. Return:    AH = status (00h,80h,81h,83h,84h,87h,88h) (see #2255)
  8277.     BX = actual number of pages allocated to handle
  8278.  
  8279. (Table 2255)
  8280. Values for EMS function status:
  8281.  00h    successful
  8282.  80h    internal error
  8283.  81h    hardware malfunction
  8284.  83h    invalid handle
  8285.  84h    undefined function requested
  8286.  87h    more pages requested than present in system
  8287.  88h    more pages requested than currently available
  8288.  8Ah    invalid logical page number encountered
  8289.  8Bh    invalid physical page number encountered
  8290.  8Fh    undefined subfunction
  8291.  90h    undefined attribute type
  8292.  91h    feature not supported
  8293.  A0h    no such handle name
  8294.  A1h    duplicate handle name
  8295. --------m-6752-------------------------------
  8296. INT 67 - LIM EMS 4.0 - GET/SET HANDLE ATTRIBUTES
  8297.     AH = 52h
  8298.     AL = subfunction
  8299.         00h get handle attributes
  8300.         Return: AL = attribute
  8301.                 00h handle is volatile
  8302.                 01h handle is nonvolatile
  8303.         01h set handle attributes
  8304.         BL = new attribute (see returned AL)
  8305.         02h get attribute capability
  8306.         Return: AL = attribute capability
  8307.                 00h only volatile handles supported
  8308.                 01h both volatile and non-volatile supported
  8309.     DX = handle
  8310. Return: AH = status (00h,80h,81h,83h,84h,8Fh-91h) (see #2253)
  8311. SeeAlso: AH=53h
  8312. --------m-6753-------------------------------
  8313. INT 67 - LIM EMS 4.0 - GET/SET HANDLE NAME
  8314.     AH = 53h
  8315.     AL = subfunction
  8316.         00h get handle name
  8317.            ES:DI -> 8-byte buffer for handle name
  8318.         01h set handle name
  8319.            DS:SI -> 8-byte handle name
  8320.     DX = handle
  8321. Return: AH = status (00h,80h,81h,83h,84h,8Fh,A1h) (see #2253)
  8322. SeeAlso: AH=52h
  8323. --------m-6754-------------------------------
  8324. INT 67 - LIM EMS 4.0 - GET HANDLE DIRECTORY
  8325.     AH = 54h
  8326.     AL = subfunction
  8327.         00h get handle directory
  8328.            ES:DI -> buffer for handle directory (see #2256)
  8329.         01h search for named handle
  8330.            DS:SI -> 8-byte name
  8331.         02h get total number of handles
  8332. Return: AL = number of entries in handle directory (subfunction 00h)
  8333.     DX = value of named handle (subfunction 01h)
  8334.     BX = total number of handles (subfunction 02h)
  8335.     AH = status (00h,80h,81h,84h,8Fh,A0h,A1h) (see also #2255)
  8336.         A1h a handle found had no name
  8337.  
  8338. Format of EMS handle directory entry:
  8339. Offset    Size    Description    (Table 2256)
  8340.  00h    WORD    handle
  8341.  02h  8 BYTEs    handle's name
  8342. --------m-6755-------------------------------
  8343. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND JUMP
  8344.     AH = 55h
  8345.     AL = subfunction
  8346.         00h physical page numbers provided by caller
  8347.         01h segment addresses provided by caller
  8348.     DX = handle
  8349.     DS:SI -> structure containing map and jump address
  8350. Return: (at target address unless error)
  8351.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  8352. SeeAlso: AH=56h
  8353. --------m-6756-------------------------------
  8354. INT 67 - LIM EMS 4.0 - ALTER PAGE MAP AND CALL
  8355.     AH = 56h
  8356.     AL = subfunction
  8357.         00h physical page numbers provided by caller
  8358.         DX = handle
  8359.         DS:SI -> structure containing page map and call address
  8360.         01h segment addresses provided by caller
  8361.         DX = handle
  8362.         DS:SI -> structure containing page map and call address
  8363.         02h get page map stack space required
  8364.         Return: BX = stack space required
  8365. Return: (if successful, the target address is called.  Use a RETF to return and
  8366.      restore mapping context)
  8367.     AH = status (00h,80h,81h,83h,84h,8Ah,8Bh,8Fh) (see #2253)
  8368. SeeAlso: AH=55h
  8369. --------m-6756FF-----------------------------
  8370. INT 67 - RM386 v6.00 - ???
  8371.     AX = 56FFh
  8372.     DS:SI -> ???
  8373.     ???
  8374. Return: ???
  8375. --------m-6757-------------------------------
  8376. INT 67 - LIM EMS 4.0 - MOVE/EXCHANGE MEMORY REGION
  8377.     AH = 57h
  8378.     AL = subfunction
  8379.         00h move memory region
  8380.         01h exchange memory region
  8381.     DS:SI -> structure describing source and destination (see #2258)
  8382. Return: AH = status (see #2257)
  8383. Note:    source and destination may overlap for a move, in which case the copy
  8384.       direction is chosen such that the destination receives an intact copy
  8385.       of the source region
  8386.  
  8387. (Table 2257)
  8388. Values for EMS function status:
  8389.  00h    successful
  8390.  80h    internal error
  8391.  81h    hardware failure
  8392.  83h    invalid handle
  8393.  84h    undefined function requested
  8394.  8Ah    invalid logical page number encountered
  8395.  8Fh    undefined subfunction
  8396.  92h    successful, but a portion of the source region has been overwritten
  8397.  93h    length of source or destination region exceeds length of region
  8398.       allocated to either source or destination handle
  8399.  94h    conventional and expanded memory regions overlap
  8400.  95h    offset within logical page exceeds size of logical page
  8401.  96h    region length exceeds 1M
  8402.  97h    source and destination EMS regions have same handle and overlap
  8403.  98h    memory source or destination type undefined
  8404.  A2h    attempted to wrap around 1M conventional address space
  8405.  
  8406. Format of EMS copy data:
  8407. Offset    Size    Description    (Table 2258)
  8408.  00h    DWORD    region length in bytes
  8409.  04h    BYTE    source memory type
  8410.         00h conventional
  8411.         01h expanded
  8412.  05h    WORD    source handle (0000h if conventional memory)
  8413.  07h    WORD    source initial offset (within page if EMS, segment if convent)
  8414.  09h    WORD    source initial segment (conv mem) or logical page (EMS)
  8415.  0Bh    BYTE    destination memory type
  8416.         00h conventional
  8417.         01h expanded
  8418.  0Ch    WORD    destination handle
  8419.  0Eh    WORD    destination initial offset
  8420.  10h    WORD    destination initial segment or page
  8421. --------m-6758-------------------------------
  8422. INT 67 - LIM EMS 4.0 - GET MAPPABLE PHYSICAL ADDRESS ARRAY
  8423.     AH = 58h
  8424.     AL = subfunction
  8425.         00h get mappable physical address array
  8426.         ES:DI -> buffer to be filled with array (see #2259)
  8427.         01h get number of entries in m.p.a. array
  8428. Return: CX = number of entries in array
  8429.     AH = status (00h,80h,81h,84h,8Fh) (see #2257)
  8430. Note:    the returned array for subfunction 00h is filled in physical segment
  8431.       address order
  8432.  
  8433. Format of EMS mappable physical address entry:
  8434. Offset    Size    Description    (Table 2259)
  8435.  00h    WORD    physical page segment
  8436.  02h    WORD    physical page number
  8437. --------m-675857-----------------------------
  8438. INT 67 U - NETROOM??? - ???
  8439.     AX = 5857h
  8440.     BX = function??? (0057h,0059h,0159h seen)
  8441.     ???
  8442. Return: ???
  8443. Note:    BX=0059h appears to be analogous to AX=5800h and BX=0159h appears to
  8444.       be analogous to AX=5801h; BX=0057h appears to indicate whether
  8445.       AX=580xh or AX=5857h/BX=0x59h should be used
  8446. SeeAlso: AX=5BF0h
  8447. --------m-6759-------------------------------
  8448. INT 67 - LIM EMS 4.0 - GET EXPANDED MEMORY HARDWARE INFORMATION
  8449.     AH = 59h
  8450.     AL = subfunction
  8451.         00h get hardware configuration array
  8452.         ES:DI -> buffer to be filled with array (see #2260)
  8453.         01h get unallocated raw page count
  8454.         Return: BX = unallocated raw pages
  8455.             DX = total raw pages
  8456. Return: AH = status (see also AH=58h"EMS 4.0")
  8457.         A4h access denied by operating system
  8458. Note:    subfunction 00h is for use by operating systems only, and can be
  8459.       enabled or disabled at any time by the operating system
  8460.  
  8461. Format of EMS hardware configuration array:
  8462. Offset    Size    Description    (Table 2260)
  8463.  00h    WORD    size of raw EMM pages in paragraphs
  8464.  02h    WORD    number of alternate register sets
  8465.  04h    WORD    size of mapping-context save area in bytes
  8466.  06h    WORD    number of register sets assignable to DMA
  8467.  08h    WORD    DMA operation type
  8468.         0000h DMA with alternate register sets
  8469.         0001h only one DMA register set
  8470. --------m-675A-------------------------------
  8471. INT 67 - LIM EMS 4.0 - ALLOCATE STANDARD/RAW PAGES
  8472.     AH = 5Ah
  8473.     AL = subfunction
  8474.         00h allocate standard pages
  8475.         01h allocate raw pages
  8476.     BX = number of pages to allocate
  8477. Return: DX = handle
  8478.     AH = status (00h,80h,81h,84h,85h,87h,88h,8Fh) (see #2253)
  8479. --------m-675B-------------------------------
  8480. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET
  8481.     AH = 5Bh
  8482.     AL = subfunction
  8483.         00h get alternate map register set
  8484.         Return: BL = current active alternate map register set number
  8485.             ES:DI -> map register context save area if BL=00h
  8486.         01h set alternate map register set
  8487.         BL = new alternate map register set number
  8488.         ES:DI -> map register context save area if BL=0
  8489.         02h get alternate map save array size
  8490.         Return: DX = array size in bytes
  8491.         03h allocate alternate map register set
  8492.         Return: BL = number of map register set; 00h = not supported
  8493.         04h deallocate alternate map register set
  8494.         BL = number of alternate map register set
  8495. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Dh,A3h,A4h) (see #2261)
  8496. Note:    this function is for use by operating systems only, and can be
  8497.       enabled or disabled at any time by the operating system
  8498.  
  8499. (Table 2261)
  8500. Values for EMS function status:
  8501.  00h    successful
  8502.  80h    internal error
  8503.  81h    hardware malfunction
  8504.  84h    undefined function requested
  8505.  8Fh    undefined subfunction
  8506.  9Ah    specified alternate map register or DMA register set not supported
  8507.  9Bh    all alternate map register or DMA register sets currently allocated
  8508.  9Ch    alternate map register or DMA register sets not supported
  8509.  9Dh    undefined or unallocated alternate map register/DMA register set
  8510.  9Eh    dedicated DMA channels not supported
  8511.  9Fh    specified dedicated DMA channel not supported
  8512.  A3h    source array corrupted
  8513.  A4h    operating system denied access
  8514. --------m-675B-------------------------------
  8515. INT 67 - LIM EMS 4.0 - ALTERNATE MAP REGISTER SET - DMA REGISTERS
  8516.     AH = 5Bh
  8517.     AL = subfunction
  8518.         05h allocate DMA register set
  8519.         Return: BL = DMA register set number, 00h if not supported
  8520.         06h enable DMA on alternate map register set
  8521.            BL = DMA register set number
  8522.            DL = DMA channel number
  8523.         07h disable DMA on alternate map register set
  8524.            BL = DMA register set number
  8525.         08h deallocate DMA register set
  8526.            BL = DMA register set number
  8527. Return: AH = status (00h,80h,81h,84h,8Fh,9Ah-9Fh,A3h,A4h) (see #2261)
  8528. Note:    this function is for use by operating systems only, and can be
  8529.       enabled or disabled at any time by the operating system
  8530. --------m-675BE0-----------------------------
  8531. INT 67 - MICEMM v4D, RM386 - GET LINEAR ADDRESS OF MEMORY
  8532.     AX = 5BE0h
  8533.     ES:BX -> memory for which to get linear address
  8534. Return: AH = 00h
  8535.     CX:DX = linear address of physical memory corresponding to ES:BX
  8536. Program: RAM-MAN/386 is the memory manager included with Helix's Netroom;
  8537.       MICEMM is a memory manager for some Micronics motherboards
  8538. Note:    this has been superceded by AX=DE06h, which should be used instead
  8539. SeeAlso: AX=5BF0h,AX=5BF1h,AX=DE06h
  8540. --------m-675BE1-----------------------------
  8541. INT 67 - RM386 v6.00+ - GET MEMORY MANAGER SIZE
  8542.     AX = 5BE1h
  8543. Return: AH = 00h
  8544.     CX = code and data size in bytes
  8545.     DX:BX = physical address of RM386 code
  8546.     DI:SI = total size of RM386 area including handle tables
  8547.     BP = number of additional pages (high DOS, etc.)
  8548. SeeAlso: AX=5BE0h,AX=5BE2h
  8549. --------m-675BE2-----------------------------
  8550. INT 67 - RM386 v6.00+ - GET INTERRUPT VECTORS
  8551.     AX = 5BE2h
  8552. Return: DS:SI -> V86-mode table (see #2262)
  8553.     ES:BX -> ??? (undoc, middle of device driver interrupt routine!)
  8554. SeeAlso: AX=5BE0h,AX=5BE1h
  8555.  
  8556. Format of RM386 V86-mode table:
  8557. Offset    Size    Description    (Table 2262)
  8558.  00h    DWORD    original INT 13 vector
  8559.  04h    DWORD    original INT 15 vector
  8560.  08h    DWORD    original INT 19 vector
  8561.  0Ch    DWORD    original INT 21 vector
  8562.  10h    DWORD    original INT 4B vector
  8563.  14h    DWORD    original INT 67 vector
  8564. --------m-675BF0-----------------------------
  8565. INT 67 - MICEMM v4D, RM386 - INSTALLATION CHECK
  8566.     AX = 5BF0h
  8567. Return: AH = 00h if MICEMM or RM386 present
  8568.         BX = code segment of driver
  8569. Program: MICEMM is the Micronics Expanded Memory Manager; RM386 is the memory
  8570.       manager included in Helix Software's Netroom
  8571. SeeAlso: AH=3Fh,AX=5BE0h,AX=5BF1h
  8572. --------m-675BF1-----------------------------
  8573. INT 67 - MICEMM v4D, RM386 - GET ADDRESS MAP
  8574.     AX = 5BF1h
  8575.     ES:BX -> 256-byte (MICEMM) or 512-byte (RM386) buffer for memory types
  8576. Return: AH = 00h
  8577.     ES:BX buffer filled (see #2263)
  8578. Note:    each byte in the buffer specifies the type of a 4K page of memory
  8579. SeeAlso: AX=5BE0h,AX=5BF0h
  8580.  
  8581. (Table 2263)
  8582. Values for MICEMM/RM386 memory type:
  8583.  00h    unused (MICEMM), RAM/available (RM386)
  8584.  02h    DOS extension (XMS UMB)
  8585.  04h    shadowed ROM
  8586.  08h    mappable EMS
  8587.  10h    page frame
  8588.  20h    ROM
  8589.  40h    reserved (video memory, etc)
  8590.  80h    RAM (MICEMM), Windows UMB (RM386)
  8591. --------m-675BF2-----------------------------
  8592. INT 67 - RM386 - GET RM386 INTERNAL DATA
  8593.     AX = 5BF2h
  8594.     CX = size of buffer
  8595.     DS:SI -> buffer for internal data
  8596.     (documentation says ES:BX -> buffer, SI = offset within RM386)
  8597. Return: buffer filled
  8598. Note:    the data returned by this function is release-specific
  8599. SeeAlso: AX=5BF0h
  8600. --------m-675BF3-----------------------------
  8601. INT 67 - RM386 - RETURN TO REAL MODE
  8602.     AX = 5BF3h
  8603. Return: nothing
  8604. Note:    use AX=5DE0h instead of this functin
  8605. SeeAlso: AX=5BF0h,AX=5DE0h
  8606. --------m-675BF4-----------------------------
  8607. INT 67 - RM386 v6.00 - GET RM386 GLOBAL FLAGS
  8608.     AX = 5BF4h
  8609. Return: AH = 00h
  8610.     BX = global flags 1 (see #2264)
  8611.     CX = global flags 2 (see #2265)
  8612.     DX = global flags 3 (see #2266)
  8613.     SI = global flags 4 (see #2267)
  8614. SeeAlso: AX=5BF0h
  8615.  
  8616. Bitfields for RM386 global flags 1:
  8617. Bit(s)    Description    (Table 2264)
  8618.  0-3    reserved
  8619.  4    V86 mode
  8620.  5    reserved
  8621.  6    80386 or higher CPU
  8622.  7,8    reserved
  8623.  9    A20 enabled at startup
  8624.  10    "HIGH_IO"
  8625.  11    ROM
  8626.  12    large frame
  8627.  13,14    reserved
  8628.  15    PS/2-style A20 control
  8629.  
  8630. Bitfields for RM386 global flags 2:
  8631. Bit(s)    Description    (Table 2265)
  8632.  0    HMA in use
  8633.  1    XMS present
  8634.  2    using XMS driver memory
  8635.  3    HIGH (NEAT only)
  8636.  4-7    reserved
  8637.  8    NOBKTRAP
  8638.  9    NORESET
  8639.  10    ALTMAP
  8640.  11    NOFRAME
  8641.  12-15    reserved
  8642.  
  8643. Bitfields for RM386 global flags 3:
  8644. Bit(s)    Description    (Table 2266)
  8645.  0    NOTEST
  8646.  1    NOEBDA
  8647.  2    Windows3 support
  8648.  3    system board mouse
  8649.  4    DISKBUF
  8650.  5    EBDALOW
  8651.  6    A20 global enable flag
  8652.  7    A20 flag
  8653.  8    EBDA moved to stub
  8654.  9    VXD file was found
  8655.  10    reserved
  8656.  11    NOBOOTMAP
  8657.  12    AUTO
  8658.  13    PS/2 machine
  8659.  14    Compaq ROM merge active
  8660.  15    NOHMA set
  8661.  
  8662. Bitfields for RM386 global flags 4:
  8663. Bit(s)    Description    (Table 2267)
  8664.  0    "NOV8259" don't virtualize interrupt controller
  8665.  1    NOSCSI
  8666.  2    NOSCAN
  8667.  3    NOTR
  8668.  4    ALTBOOT
  8669.  5    NOCOMPQ
  8670.  6    KB2TRAP
  8671.  7    DESHADOW
  8672.  8    Video 7 VGA detected
  8673.  9    reserved
  8674.  10    NOVGA
  8675.  11    NOPS2
  8676.  12    DEBUG
  8677.  13    NOVKB
  8678.  14,15    reserved
  8679. --------m-675BF5-----------------------------
  8680. INT 67 - RM386 v6.00 - GET RM386 EMS HANDLE COUNT
  8681.     AX = 5BF5h
  8682. Return: AH = status
  8683.         00h successful
  8684.         BX = current number of allocated EMS handles
  8685.         84h function not available
  8686. SeeAlso: AX=5BF0h
  8687. --------m-675C-------------------------------
  8688. INT 67 - LIM EMS 4.0 - PREPARE EXPANDED MEMORY HARDWARE FOR WARM BOOT
  8689.     AH = 5Ch
  8690. Return: AH = status (see #2268)
  8691.  
  8692. (Table 2268)
  8693. Values for EMS function status:
  8694.  00h    successful
  8695.  80h    internal error
  8696.  81h    hardware malfunction
  8697.  84h    undefined function requested
  8698. --------m-675D-------------------------------
  8699. INT 67 - LIM EMS 4.0 - ENABLE/DISABLE OS FUNCTION SET FUNCTIONS
  8700.     AH = 5Dh
  8701.     AL = subfunction
  8702.         00h enable OS Function Set
  8703.         01h disable OS Function Set
  8704.         02h return access key (resets memory manager, returns access key at
  8705.         next invocation)
  8706.     BX,CX = access key returned by first invocation
  8707. Return: BX,CX = access key, returned only on first invocation of function
  8708.     AH = status (see also AH=5Ch)
  8709.         8Fh undefined subfunction
  8710.         A4h operating system denied access
  8711. --------m-675D03-----------------------------
  8712. INT 67 u - Nanosoft MD386 - INTERNAL INITIALIZATION
  8713.     AX = 5D03h
  8714.     ???
  8715. Return: ???
  8716. Program: MD386 is a subset EMS memory manager by Nanosoft specifically designed
  8717.       for use with the MultiDOS Plus multitasker
  8718. SeeAlso: AX=5D04h,AX=5E00h
  8719. --------m-675D04-----------------------------
  8720. INT 67 - Nanosoft MD386 - GET ALTERNATE MAP STRUCTURE
  8721.     AX = 5D04h
  8722.     BX = alternate register set number
  8723.     ES:DI -> 1024-byte buffer for map structure
  8724. Return: AH = status (see #2253)
  8725.     buffer filled if AH=00h
  8726. Note:    used for debugging purposes
  8727. SeeAlso: AX=5D05h
  8728. --------m-675D05-----------------------------
  8729. INT 67 - Nanosoft MD386 - GET INTERNAL HANDLE TABLE
  8730.     AX = 5D05h
  8731.     BX = handle number
  8732.     ES:DI -> 1024-byte buffer for handle table
  8733. Return: AH = status (see #2253)
  8734.     buffer filled if AH=00h
  8735. Note:    used for debugging purposes
  8736. SeeAlso: AX=5D04h
  8737. --------m-675DE0-----------------------------
  8738. INT 67 - RM386 - DISABLE RM386
  8739.     AX = 5DE0h
  8740. Note:    RM386 traps this function on the initial transition to protected
  8741.       mode caused by the INT instruction, which means it can not be
  8742.       overridden simply by hooking the interrupt
  8743. SeeAlso: AX=5DE1h
  8744. --------m-675DE1-----------------------------
  8745. INT 67 - RM386 - ENABLE RM386
  8746.     AX = 5DE1h
  8747. Note:    RM386 traps this function on the initial transition to protected
  8748.       mode caused by the INT instruction, which means it can not be
  8749.       overridden simply by hooking the interrupt
  8750. SeeAlso: AX=5DE0h
  8751. --------m-675DE2-----------------------------
  8752. INT 67 - RM386 - GET PAGE TABLE
  8753.     AX = 5DE2h
  8754.     ES:DI -> 1088-byte buffer for page table
  8755. Return: ES:DI buffer filled
  8756. Note:    RM386 traps this function on the initial transition to protected
  8757.       mode caused by the INT instruction, which means it can not be
  8758.       overridden simply by hooking the interrupt
  8759. SeeAlso: AX=5DE3h
  8760. --------m-675DE3-----------------------------
  8761. INT 67 - RM386 - SET PAGE TABLE
  8762.     AX = 5DE3h
  8763.     ES:DI -> 1088-byte buffer containing page table
  8764. Notes:    only the access bits of the page table are used, the remainder is
  8765.       ignored
  8766.     RM386 traps this function on the initial transition to protected
  8767.       mode caused by the INT instruction, which means it can not be
  8768.       overridden simply by hooking the interrupt
  8769. SeeAlso: AX=5DE2h
  8770. --------m-675DE4-----------------------------
  8771. INT 67 - RM386 - SET WRITE-PROTECTION FOR PAGE IN FIRST MEGABYTE
  8772.     AX = 5DE4h
  8773.     BL = page number
  8774.     BH = access (00h read-only, 01h read-write)
  8775. Note:    RM386 traps this function on the initial transition to protected
  8776.       mode caused by the INT instruction, which means it can not be
  8777.       overridden simply by hooking the interrupt
  8778. --------m-675DE5-----------------------------
  8779. INT 67 - RM386 - MAP PHYSICAL PAGE TO PHYSICAL SEGMENT
  8780.     AX = 5DE5h
  8781.     EBX = physical page number
  8782.     DX = page number in first megabyte to be remapped (linear-addr SHR 12)
  8783. Return: AH = status
  8784.         00h successful
  8785.         8Bh invalid destination page (not in first megabyte)
  8786. Note:    RM386 traps this function on the initial transition to protected
  8787.       mode caused by the INT instruction, which means it can not be
  8788.       overridden simply by hooking the interrupt
  8789. SeeAlso: AX=5DE6h
  8790. --------m-675DE6-----------------------------
  8791. INT 67 - RM386 - MAP LOGICAL 4K PAGE TO PHYSICAL SEGMENT
  8792.     AX = 5DE6h
  8793.     BX = logical page number in 4K pages from beginning of memory for EMS
  8794.           handle
  8795.     CX = segment in first megabyte to be remapped
  8796.     DX = previously-allocated EMS handle
  8797. Return: AH = status
  8798.         00h successful
  8799.         83h invalid handle
  8800.         8Ah invalid logical page (out of handle's range)
  8801.         8Bh invalid destination page (not in first megabyte)
  8802. Note:    RM386 traps this function on the initial transition to protected
  8803.       mode caused by the INT instruction, which means it can not be
  8804.       overridden simply by hooking the interrupt
  8805. SeeAlso: AX=5DE5h
  8806. --------m-675DE7-----------------------------
  8807. INT 67 - RM386 - SET PAGE TABLE BITS FOR RANGE OF PAGES
  8808.     AX = 5DE7h
  8809.     BL = page table bits to be set (bits 2-0 = U/S, R/W, P)
  8810.     CX = number of pages to set
  8811.     DX = first page number to set (in first megabyte)
  8812. Return: AH = status
  8813.         00h successful
  8814.         8Bh invalid destination page (not in first megabyte)
  8815.         A5h invalid page bits
  8816.         A6h invalid page count (overflows first megabyte)
  8817. Note:    RM386 traps this function on the initial transition to protected
  8818.       mode caused by the INT instruction, which means it can not be
  8819.       overridden simply by hooking the interrupt
  8820. --------m-675DE8-----------------------------
  8821. INT 67 - RM386 - GET PARTIAL PAGE TABLE
  8822.     AX = 5DE8h
  8823.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  8824.     CX = number of page table entries to get
  8825.     ES:DI -> buffer for DWORD page table entries
  8826. Return: AH = status (00h successful, 8Bh invalid page)
  8827. Note:    RM386 traps this function on the initial transition to protected
  8828.       mode caused by the INT instruction, which means it can not be
  8829.       overridden simply by hooking the interrupt
  8830. SeeAlso: AX=5DE9h
  8831. --------m-675DE9-----------------------------
  8832. INT 67 - RM386 - SET PARTIAL PAGE TABLE
  8833.     AX = 5DE9h
  8834.     BX = starting page number in first megabyte+HMA (0000h-010Fh)
  8835.     CX = number of page table entries to get
  8836.     DS:SI -> buffer of DWORD page table entries
  8837. Return: AH = status (00h successful, 8Bh invalid destination page)
  8838. Note:    RM386 traps this function on the initial transition to protected
  8839.       mode caused by the INT instruction, which means it can not be
  8840.       overridden simply by hooking the interrupt
  8841. SeeAlso: AX=5DE8h
  8842. --------m-675DEA-----------------------------
  8843. INT 67 - RM386 - V86-MODE I/O PORT TRAPPING CONTROL
  8844.     AX = 5DEAh
  8845.     BX = function
  8846.         00h globally disable V86-mode trapping
  8847.         01h globally enable V86-mode trapping
  8848.         CL = interrupt to use for trapping
  8849.         02h get I/O trapping state
  8850. Return: AH = status
  8851.         00h successful
  8852.         BX = current trapping state (function 02h)
  8853.             0000h disabled, 0001h enabled
  8854.         CX = interrupt used as trap interrupt (functions 00h and 02h)
  8855. Notes:    RM386 traps this function on the initial transition to protected
  8856.       mode caused by the INT instruction, which means it can not be
  8857.       overridden simply by hooking the interrupt
  8858.     when I/O trapping is enabled and I/O port access occurs, RM386
  8859.       simulates an INT instruction for the specified interrupt; the
  8860.       interrupt handler is responsible for decoding the trapped instruction
  8861.       and performing the appropriate action.  INT 2C/AX=002Dh provides a
  8862.       similar but more-easily used interface.
  8863. SeeAlso: AX=5DEBh,AH=EFh"RM386",INT 2C/AX=002Dh
  8864. --------m-675DEB-----------------------------
  8865. INT 67 - RM386 - V86-MODE I/O TRAPPING PORT CONTROL
  8866.     AX = 5DEBh
  8867.     BX = function
  8868.         00h disable V86-mode trapping for specified port
  8869.         01h enable V86-mode trapping for specified port
  8870.         02h get V86-mode trapping state for specified port
  8871.     DX = port for which to enable/disable/query trapping
  8872. Return: AH = status
  8873.         00h successful
  8874.         BX = current trapping state (00h off, 01h on) (function 02)
  8875.         A7h invalid port ID
  8876.         A8h reserved port--cannot trap/untrap (DMA/INT/KBD controllers)
  8877. Notes:    RM386 traps this function on the initial transition to protected
  8878.       mode caused by the INT instruction, which means it can not be
  8879.       overridden simply by hooking the interrupt
  8880. SeeAlso: AX=5DEAh
  8881. --------m-675DFD-----------------------------
  8882. INT 67 U - RM386 v6.00 - ???
  8883.     AX = 5DFDh
  8884.     ???
  8885. Return: ???
  8886. Note:    RM386 traps this function on the initial transition to protected
  8887.       mode caused by the INT instruction, which means it can not be
  8888.       overridden simply by hooking the interrupt
  8889. SeeAlso: AX=5DFEh
  8890. --------m-675DFE-----------------------------
  8891. INT 67 U - RM386 v6.00 - ???
  8892.     AX = 5DFEh
  8893.     ???
  8894. Return: ???
  8895. Note:    RM386 traps this function on the initial transition to protected
  8896.       mode caused by the INT instruction, which means it can not be
  8897.       overridden simply by hooking the interrupt
  8898. SeeAlso: AX=5DFDh
  8899. --------m-675DFF-----------------------------
  8900. INT 67 U - RM386 v6.00 - ???
  8901.     AX = 5DFFh
  8902.     ???
  8903. Return: ???
  8904. Note:    RM386 traps this function on the initial transition to protected
  8905.       mode caused by the INT instruction, which means it can not be
  8906.       overridden simply by hooking the interrupt
  8907. SeeAlso: AX=5DFDh,AX=5DFEh
  8908. --------m-675E00-----------------------------
  8909. INT 67 - Nanosoft MD386 - SET HARDWARE BREAKPOINT
  8910.     AX = 5E00h
  8911.     DH = breakpoint number (0-3)
  8912.     DL = breakpoint attributes (used to set DR7)
  8913.     CX:BX = linear address of breakpoint
  8914. SeeAlso: AX=5D03h,AX=5E01h
  8915. --------m-675E01-----------------------------
  8916. INT 67 - Nanosoft MD386 - GET HARDWARE DEBUG REGISTER
  8917.     AX = 5E01h
  8918.     BL = register number (0-3,7)
  8919. Return: CX:BX = value of specified DRx register
  8920. SeeAlso: AX=5E00h
  8921. --------m-675E02-----------------------------
  8922. INT 67 - Nanosoft MD386 - SET DEBUG EXCEPTION HANDLER
  8923.     AX = 5E02h
  8924.     CX:BX -> exception handler
  8925. Note:    the specified exception handler is called with a simulated interrupt
  8926.       whenever a debug exception occurs which was caused by a hardware
  8927.       breakpoint set with the debug registers
  8928. SeeAlso: AX=5E04h,AX=5E05h
  8929. --------m-675E03-----------------------------
  8930. INT 67 - Nanosoft MD386 - ENABLE/DISABLE MEMORY WRITE PROTECTION
  8931.     AX = 5E03h
  8932.     BL = register map set number
  8933.     BH = new state (00h read-only, else read-write)
  8934.     CX = linear page number (linear address SHR 12)
  8935. Note:    setting write protection in map set 0 will cause the setting to become
  8936.       the default for newly-allocated map sets
  8937. --------m-675E04-----------------------------
  8938. INT 67 - Nanosoft MD386 - GET DEBUG EXCEPTION
  8939.     AX = 5E04h
  8940. Return: BL = debug exception (low byte of DR6 register)
  8941. SeeAlso: AX=5E02h,AX=5E05h
  8942. --------m-675E05-----------------------------
  8943. INT 67 - Nanosoft MD386 - IGNORE NEXT DEBUG EXCEPTION
  8944.     AX = 5E05h
  8945. Note:    may be required when using AX=5E02h for handling instruction
  8946.       breakpoints
  8947. SeeAlso: AX=5E02h,AX=5E04h
  8948. --------m-6760-------------------------------
  8949. INT 67 - EEMS - GET PHYSICAL WINDOW ARRAY
  8950.     AH = 60h
  8951.     ES:DI -> buffer
  8952. Return: AH = status (see also AH=40h)
  8953.     AL = number of entries
  8954.     buffer at ES:DI filled
  8955. --------m-6761-------------------------------
  8956. INT 67 - EEMS - GENERIC ACCELERATOR CARD SUPPORT
  8957.     AH = 61h
  8958.     ???
  8959. Return: ???
  8960. Note:    can be used by accelerator card manufacturer to flush RAM cache,
  8961.       ensuring that the cache accurately reflects what the processor would
  8962.       see without the cache.
  8963. --------m-6768-------------------------------
  8964. INT 67 - EEMS - GET ADDRESSES OF ALL PAGE FRAMES IN SYSTEM
  8965.     AH = 68h
  8966.     ES:DI -> buffer
  8967. Return: AH = status (see also AH=40h)
  8968.     AL = number of entries
  8969.     buffer at ES:DI filled
  8970. Note:    equivalent to LIM 4.0 function 58h
  8971. --------m-6769-------------------------------
  8972. INT 67 - EEMS - MAP PAGE INTO FRAME
  8973.     AH = 69h
  8974.     AL = frame number
  8975.     BX = page number
  8976.     DX = handle
  8977. Return: AH = status (see also AH=40h)
  8978. Note:    similar to EMS function 44h
  8979. SeeAlso: AH=44h,AH=50h,AH=6Ah
  8980. --------m-676A-------------------------------
  8981. INT 67 - EEMS - PAGE MAPPING
  8982.     AH = 6Ah
  8983.     AL = subfunction
  8984.         00h save partial page map
  8985.         CH = first page frame
  8986.         CL = number of frames
  8987.         ES:DI -> buffer which is to be filled
  8988.         01h restore partial page map
  8989.         CH = first page frame
  8990.         CL = number of frames
  8991.         DI:SI -> previously saved page map
  8992.         02h save and restore partial page map
  8993.         CH = first page frame
  8994.         CL = number of frames
  8995.         ES:DI = buffer for current page map
  8996.         DI:SI = new page map
  8997.         03h get size of save array
  8998.         CH = first page frame
  8999.         CL = number of frames
  9000.         Return: AL = size of array in bytes
  9001.         04h switch to standard map register setting
  9002.         05h switch to alternate map register setting
  9003.         06h deallocate pages mapped to frames in conventional memory
  9004.         CH = first page frame
  9005.         CL = number of frames
  9006. Return: AH = status (see #2253)
  9007. Note:    similar to EMS function 4Eh, except that a subrange of pages can be
  9008.       specified
  9009. SeeAlso: AH=69h
  9010. --------m-676B-------------------------------
  9011. INT 67 - DESQview 2.42-2.53 - BUG
  9012.     AH = 6Bh
  9013. Note:    the EMM.DVR portion of DESQview branches to a random location on this
  9014.       function due to a fencepost error
  9015. --------m-67DD-------------------------------
  9016. INT 67 - Quadtel QMAPS - API
  9017.     AH = DDh
  9018.     AL = function
  9019.     ???
  9020. Return: ???
  9021. Notes:    details are not yet available
  9022.     Hewlett-Packard's HPMM.SYS is a licensed version of QMAPS, and thus
  9023.       supports this API
  9024. SeeAlso: AH=3Fh,AX=FFA5h
  9025. --------E-67DE00-----------------------------
  9026. INT 67 - Virtual Control Program Interface - INSTALLATION CHECK
  9027.     AX = DE00h
  9028. Return: AH = status
  9029.         00h VCPI is present
  9030.         BH = major version number
  9031.         BL = minor version number
  9032.         nonzero  VCPI not present
  9033. BUG:    MS Windows 3.00 is reported to "object violently" to this call.
  9034. SeeAlso: INT 2F/AX=1687h
  9035. --------E-67DE01-----------------------------
  9036. INT 67 - Virtual Control Program Interface - GET PROTECTED MODE INTERFACE
  9037.     AX = DE01h
  9038.     ES:DI -> 4K page table buffer
  9039.     DS:SI -> three descriptor table entries in GDT
  9040.         first becomes code segment descriptor, other two for use by
  9041.           main control program
  9042. Return: AH = 00h successful
  9043.         DI -> first unused page table entry in buffer
  9044.         EBX -> protected mode entry point in code segment (see #2269)
  9045.     AH = nonzero  failed
  9046. Note:    protected mode entry point may be called with AX=DE00h-DE05h and
  9047.       AX=DE0Ch (in each case, all other registers as appropriate for
  9048.       the function)
  9049. SeeAlso: INT 2F/AX=1687h,INT 67/AH=3Fh
  9050.  
  9051. (Table 2269)
  9052. Call QEMM v6.03 protected mode entry point additionally with:
  9053.     AX = DF00h ???
  9054.         ???
  9055.         Return: ???
  9056.     AX = DF01h ???
  9057.         ???
  9058.         Return: ???
  9059. --------E-67DE02-----------------------------
  9060. INT 67 - Virtual Control Program Interface - GET MAX PHYSICAL MEMORY ADDRESS
  9061.     AX = DE02h
  9062. Return: AH = 00h  successful
  9063.         EDX = physical address of highest 4K memory page
  9064.     AH nonzero: failed
  9065. SeeAlso: AH=3Fh
  9066. --------E-67DE03-----------------------------
  9067. INT 67 - Virtual Control Program Interface - GET NUMBER OF FREE 4K PAGES
  9068.     AX = DE03h
  9069. Return: AH = 00h  successful
  9070.         EDX = number of free 4K pages
  9071.     AH nonzero: failed
  9072. Notes:    returns total number of pages available to ALL tasks in system
  9073.     also available in protected mode by calling the protected-mode VCPI
  9074.       entry point (see AX=DE01h,#2269)
  9075. SeeAlso: AX=DE04h
  9076. --------E-67DE04-----------------------------
  9077. INT 67 - Virtual Control Program Interface - ALLOCATE A 4K PAGE
  9078.     AX = DE04h
  9079. Return: AH = 00h successful
  9080.         EDX = physical address of allocated page
  9081.     AH nonzero: failed
  9082. Notes:    the client program is responsible for freeing all memory allocated
  9083.       with this call before terminating
  9084.     also available in protected mode by calling the protected-mode VCPI
  9085.       entry point (see AX=DE01h,#2269)
  9086. SeeAlso: AH=3Fh,AX=DE03h,AX=DE05h
  9087. --------E-67DE05-----------------------------
  9088. INT 67 - Virtual Control Program Interface - FREE 4K PAGE
  9089.     AX = DE05h
  9090.     EDX = physical address of 4K page
  9091. Return: AH = status
  9092.         00h successful
  9093.         nonzero failed
  9094. Note:    also available in protected mode by calling the protected-mode VCPI
  9095.       entry point (see AX=DE01h,#2269)
  9096. SeeAlso: AH=3Fh,AX=DE04h
  9097. --------E-67DE06-----------------------------
  9098. INT 67 - Virtual Control Program Interface - GET PHYS ADDR OF PAGE IN FIRST MB
  9099.     AX = DE06h
  9100.     CX = page number (linear address shifted right 12 bits)
  9101. Return: AH = status
  9102.         00h successful
  9103.         EDX = physical address of page
  9104.         nonzero invalid page number (AH = 8Bh recommended)
  9105. SeeAlso: AX=5BE0h
  9106. --------E-67DE07-----------------------------
  9107. INT 67 - Virtual Control Program Interface - READ CR0
  9108.     AX = DE07h
  9109. Return: AH = 00h
  9110.     EBX = value of Control Register 0
  9111. SeeAlso: AH=3Fh,AX=DE07h
  9112. --------E-67DE08-----------------------------
  9113. INT 67 - Virtual Control Program Interface - READ DEBUG REGISTERS
  9114.     AX = DE08h
  9115.     ES:DI -> array of 8 DWORDs
  9116. Return: AH = 00h
  9117.     buffer filled with DR0 first, DR7 last, DR4 and DR5 unused
  9118. SeeAlso: AH=3Fh,AX=DE09h
  9119. --------E-67DE09-----------------------------
  9120. INT 67 - Virtual Control Program Interface - SET DEBUG REGISTERS
  9121.     AX = DE09h
  9122.     ES:DI -> array of 8 DWORDs holding new values of debug registers
  9123. Return: AH = 00h
  9124. Note:    values for DR4 and DR5 ignored
  9125. SeeAlso: AH=3Fh,AX=DE08h
  9126. --------E-67DE0A-----------------------------
  9127. INT 67 - Virtual Control Program Interface - GET 8259 INTERRUPT VECTOR MAPPINGS
  9128.     AX = DE0Ah
  9129. Return: AH = 00h successful
  9130.         BX = first vector used by master 8259 (IRQ0)
  9131.         CX = first vector used by slave 8259 (IRQ8)
  9132.     AH nonzero: failed
  9133. Note:    CX is undefined in systems without a slave 8259
  9134. SeeAlso: AX=DE0Bh,INT 21/AX=250Ch,INT 31/AX=0400h
  9135. --------E-67DE0B-----------------------------
  9136. INT 67 - Virtual Control Program Interface - SET 8259 INTERRUPT VECTOR MAPPINGS
  9137.     AX = DE0Bh
  9138.     BX = first vector used by master 8259
  9139.     CX = first vector used by slave 8259
  9140.     interrupts disabled
  9141. Return: AH = 00h successful
  9142.     AH nonzero: failed
  9143. Notes:    This call merely informs the server that the client has changed the
  9144.       interrupt mappings.  The client may not change the mappings if they
  9145.       have already been changed by the server or another client, and is
  9146.       responsible for restoring the original mappings before terminating.
  9147. SeeAlso: AX=DE0Ah,INT 2C/AX=002Ah
  9148. --------E-67DE0C-----------------------------
  9149. INT 67 - Virtual Control Program Interface - SWITCH TO PROTECTED MODE
  9150.     AX = DE0Ch
  9151.     ESI = linear address in first megabyte of values for system
  9152.           registers (see #2270)
  9153.     interrupts disabled
  9154. Return: interrupts disabled
  9155.     GDTR, IDTR, LDTR, TR loaded
  9156.     SS:ESP must have at least 16 bytes space, and the entry point is
  9157.           required to set up a new stack before enabling interrupts
  9158.     EAX, ESI, DS, ES, FS, GS destroyed
  9159. Note:    in protected mode, calling the protected-mode VCPI entry point with
  9160.       AX = DE0Ch
  9161.       DS = segment selector mapping entire linear address space obtained
  9162.           via AX=DE01h
  9163.       SS:ESP in first megabyte of linear memory
  9164.       STACK:QWORD  return address from FAR call to 32-bit segment
  9165.         DWORD  EIP
  9166.         DWORD  CS
  9167.         DWORD  reserved for EFLAGS
  9168.         DWORD  ESP
  9169.         DWORD  SS
  9170.         DWORD  ES
  9171.         DWORD  DS
  9172.         DWORD  FS
  9173.         DWORD  GS
  9174.       and interrupts disabled, will switch to virtual86 mode with
  9175.         interrupts disabled, all segment registers loaded, and EAX
  9176.         destroyed.
  9177. SeeAlso: AH=3Fh,INT 15/AH=89h,INT 38/AH=10h
  9178.  
  9179. Format of system register values for switch to protected mode:
  9180. Offset    Size    Description    (Table 2270)
  9181.  00h    DWORD    value for CR3
  9182.  04h    DWORD    linear address in first megabyte of value for GDTR
  9183.  08h    DWORD    linear address in first megabyte of value for IDTR
  9184.  0Ch    WORD    value for LDTR
  9185.  0Eh    WORD    value for TR
  9186.  10h    PWORD    CS:EIP of protected mode entry-point
  9187. --------m-67DE0F-----------------------------
  9188. INT 67 - Netroom3 - ???
  9189.     AX = DE0Fh
  9190.     ???
  9191. Return: ???
  9192. Note:    called by Netroom's DPMI.EXE
  9193. --------m-67EF-------------------------------
  9194. INT 67 - RM386 v6.00+ - EXECUTE XMS FUNCTION
  9195.     AH = EFh
  9196.     AL = function (00h-12h,80h-8Fh)
  9197.     other register as appropriate for XMS function
  9198. Return: varies by function (see INT 2F/AX=4310h)
  9199. Note:    these functions appear to be equivalent to the XMS functions with the
  9200.       same numbers
  9201. SeeAlso: AX=5DFFh"RM386",INT 2F/AX=4310h
  9202. --------m-67FFA5-----------------------------
  9203. INT 67 - Microsoft EMM386.EXE v4.20+ - INSTALLATION CHECK
  9204.     AX = FFA5h
  9205. Return: AX = 845Ah/84A5h if loaded
  9206.         BX:CX -> API entry point (see #2271)
  9207. Notes:    this call is available even if EMM386 is not providing EMS
  9208.     the returned AX is 845Ah inside of MSWindows, 84A5h under bare DOS
  9209.     if no other program has hooked INT 67, an alternate installation
  9210.       check is to test for the string
  9211.       "MICROSOFT EXPANDED MEMORY MANAGER 386" at offset 14h in the INT 67
  9212.       handler's segment; the word immediately preceding this string
  9213.       contains the offset of the API entry point
  9214. SeeAlso: AH=3Fh,AX=FFA5h/BX=4345h,INT 21/AX=4402h"EMM386.EXE"
  9215.  
  9216. (Table 2271)
  9217. Call EMM386.EXE API entry point with:
  9218.     AH = 00h get memory manager's status
  9219.         Return: AH = status
  9220.             bit 0: not active (OFF)
  9221.             bit 1: in "Auto" mode
  9222.     AH = 01h set memory manager's state
  9223.         AL = new state (00h ON, 01h OFF, 02h AUTO)
  9224.     AH = 02h Weitek coprocessor support
  9225.         AL = subfunction
  9226.         00h get Weitek support state
  9227.             Return: AL = status
  9228.                 bit 0: Weitek coprocessor is present
  9229.                 bit 1: Weitek support is enabled
  9230.         01h turn on Weitek support
  9231.         02h turn off Weitek support
  9232.      --- v4.20-4.41 only ---
  9233.     AH = 03h Windows support???
  9234.         AL = subfunction (00h, 01h)
  9235.     AH = 04h print copyright notice to standard output
  9236.          (using INT 21/AH=09h)
  9237.     AH = 05h print available report
  9238.          (the one shown when running EMM386 from the DOS prompt)
  9239. SeeAlso: #0733 at INT 21/AX=4402h/SF=02h,#1402 at INT 2F/AX=12FFh/BX=0106h
  9240. --------m-67FFA5BX4345-----------------------
  9241. INT 67 U - Compaq CEMM v5.10+ - PRIVATE API
  9242.     AX = FFA5h
  9243.     BX = 4345h ("CE")
  9244.     DX = subfunction
  9245.         0000h unshadow video ROM???
  9246.         0001h shadow video ROM???
  9247.         0002h map pages
  9248.         CX = number of pages (00h=one)
  9249.         ESI = linear address of first page to map into address space
  9250.         EDI = linear starting address at which pages are to be visible
  9251.         0003h get ???
  9252.         Return: DX = ??? (0-2)
  9253.         0004h BUG: crashes system due to fencepost error
  9254. Return: AH = 84h
  9255.     AL = status (84h = error, FFh = success)
  9256. Note:    if BX <> 4345h or DX > 0004h on entry, CEMM behaves identically to
  9257.       Microsoft's EMM386 (see AX=FFA5h"EMM386")
  9258. SeeAlso: AX=FFA5h"EMM386",#0733 at INT 21/AX=4402h/SF=02h,#2271
  9259. --------!---Section--------------------------
  9260.